refactor: 统一项目名称从OpenFang到ZCLAW
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
重构所有代码和文档中的项目名称,将OpenFang统一更新为ZCLAW。包括: - 配置文件中的项目名称 - 代码注释和文档引用 - 环境变量和路径 - 类型定义和接口名称 - 测试用例和模拟数据 同时优化部分代码结构,移除未使用的模块,并更新相关依赖项。
This commit is contained in:
@@ -4,13 +4,13 @@
|
||||
|
||||
### 1.1 核心发现
|
||||
|
||||
基于 `docs/openclaw-deep-dive.md` 的目标与实际代码的对比:
|
||||
基于 `docs/zclaw-deep-dive.md` 的目标与实际代码的对比:
|
||||
|
||||
| 模块 | 目标状态 | 实际状态 | 差距程度 |
|
||||
|------|----------|----------|----------|
|
||||
| **Gateway 连接** | 设备认证 + Challenge 签名 | ✅ 完整实现 | 无差距 |
|
||||
| **分身系统** | 映射到 OpenClaw `agents.list` | ⚠️ 独立存储在 `zclaw-data.json` | **严重** |
|
||||
| **设置页** | OpenClaw Runtime 配置面板 | ⚠️ 大部分是前端本地状态 | **严重** |
|
||||
| **分身系统** | 映射到 ZCLAW `agents.list` | ⚠️ 独立存储在 `zclaw-data.json` | **严重** |
|
||||
| **设置页** | ZCLAW Runtime 配置面板 | ⚠️ 大部分是前端本地状态 | **严重** |
|
||||
| **右侧面板** | 真实 Agent 身份与状态 | ⚠️ 混合真实数据与硬编码值 | **中等** |
|
||||
|
||||
### 1.2 关键差距详解
|
||||
@@ -27,21 +27,21 @@
|
||||
│ ❌ 无同步
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ OpenClaw agents.list (openclaw.json) │
|
||||
│ ZCLAW agents.list (zclaw.json) │
|
||||
│ 只有: [{ id: "main", groupChat: {...} }] │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**后果**:
|
||||
- 所有分身实际共用同一个 `main` Agent
|
||||
- 聊天时不传递 `agentId`,OpenClaw 不知道当前是哪个分身
|
||||
- 聊天时不传递 `agentId`,ZCLAW 不知道当前是哪个分身
|
||||
- Bootstrap 文件(IDENTITY.md, SOUL.md 等)生成了但未被运行时使用
|
||||
|
||||
#### 差距 2:设置页是"假状态"
|
||||
|
||||
| 设置页 | 当前实现 | 应该实现 |
|
||||
|--------|----------|----------|
|
||||
| 模型选择 | 存在 `chatStore.currentModel`(前端状态) | 调用 `config.patch` 修改 OpenClaw 配置 |
|
||||
| 模型选择 | 存在 `chatStore.currentModel`(前端状态) | 调用 `config.patch` 修改 ZCLAW 配置 |
|
||||
| MCP 服务 | 存 `quickConfig`,部分同步到 Gateway | 管理 `plugins.load.paths` |
|
||||
| 技能目录 | 存 `quickConfig` | 管理 `skills.load.extraDirs` |
|
||||
| IM 频道 | 存 `quickConfig`,只显示状态 | 管理 `channels.*` 配置 |
|
||||
@@ -49,7 +49,7 @@
|
||||
| 隐私 | 存 `quickConfig` | 管理 telemetry/优化计划 |
|
||||
|
||||
**缺失的 RPC 方法**:
|
||||
- `config.get` - 读取 OpenClaw 配置
|
||||
- `config.get` - 读取 ZCLAW 配置
|
||||
- `config.patch` - 修改配置
|
||||
- `config.apply` - 热更新配置
|
||||
|
||||
@@ -68,16 +68,16 @@ const defaultUserName = '用户7141'; // 假用户名
|
||||
### 2.1 架构层面的偏差
|
||||
|
||||
**文档期望**:
|
||||
> ZClaw 应该是 OpenClaw Runtime 的控制界面
|
||||
> ZClaw 应该是 ZCLAW Runtime 的控制界面
|
||||
|
||||
**实际实现**:
|
||||
> ZClaw 是一个有自己数据模型的前端应用,与 OpenClaw 是松耦合
|
||||
> ZClaw 是一个有自己数据模型的前端应用,与 ZCLAW 是松耦合
|
||||
|
||||
### 2.2 数据模型的分裂
|
||||
|
||||
```
|
||||
OpenClaw 数据模型:
|
||||
openclaw.json → agents.list → Agent workspace → Bootstrap files
|
||||
ZCLAW 数据模型:
|
||||
zclaw.json → agents.list → Agent workspace → Bootstrap files
|
||||
|
||||
ZClaw 数据模型:
|
||||
zclaw-data.json → clones[] → (独立的) workspace 路径
|
||||
@@ -85,21 +85,21 @@ ZClaw 数据模型:
|
||||
|
||||
两套数据模型没有桥接,导致:
|
||||
1. 分身不能路由到正确的 Agent
|
||||
2. 设置不能影响 OpenClaw 行为
|
||||
2. 设置不能影响 ZCLAW 行为
|
||||
3. Bootstrap 文件与运行时脱节
|
||||
|
||||
---
|
||||
|
||||
## 三、头脑风暴:改进方案
|
||||
|
||||
### 3.1 方案 A:完全对齐 OpenClaw(推荐)
|
||||
### 3.1 方案 A:完全对齐 ZCLAW(推荐)
|
||||
|
||||
**核心思路**:让 ZClaw 分身直接映射到 OpenClaw Agent
|
||||
**核心思路**:让 ZClaw 分身直接映射到 ZCLAW Agent
|
||||
|
||||
```
|
||||
改进后架构:
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ZClaw 分身 = OpenClaw Agent │
|
||||
│ ZClaw 分身 = ZCLAW Agent │
|
||||
│ │
|
||||
│ clone_1 ↔ agents.list[0] (id: "programmer") │
|
||||
│ clone_2 ↔ agents.list[1] (id: "designer") │
|
||||
@@ -110,9 +110,9 @@ ZClaw 数据模型:
|
||||
```
|
||||
|
||||
**优点**:
|
||||
- 符合 `openclaw-deep-dive.md` 的设计哲学
|
||||
- 符合 `zclaw-deep-dive.md` 的设计哲学
|
||||
- 分身真正有独立人格、记忆、工具权限
|
||||
- 设置页可以直接操作 OpenClaw 配置
|
||||
- 设置页可以直接操作 ZCLAW 配置
|
||||
|
||||
**缺点**:
|
||||
- 改动较大,需要修改多个模块
|
||||
@@ -129,7 +129,7 @@ ZClaw 数据模型:
|
||||
│ zclaw-data.json → clones[] │
|
||||
│ │ │
|
||||
│ ▼ (单向同步) │
|
||||
│ openclaw.json → agents.list (从分身生成) │
|
||||
│ zclaw.json → agents.list (从分身生成) │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
@@ -139,13 +139,13 @@ ZClaw 数据模型:
|
||||
|
||||
**缺点**:
|
||||
- 数据冗余,需要维护同步
|
||||
- 不符合 OpenClaw 的设计哲学
|
||||
- 不符合 ZCLAW 的设计哲学
|
||||
|
||||
### 3.3 方案 C:混合模式
|
||||
|
||||
**核心思路**:
|
||||
- 简单分身:共用 `main` Agent,通过 Bootstrap 文件区分
|
||||
- 高级分身:映射到独立 OpenClaw Agent
|
||||
- 高级分身:映射到独立 ZCLAW Agent
|
||||
|
||||
---
|
||||
|
||||
@@ -153,12 +153,12 @@ ZClaw 数据模型:
|
||||
|
||||
### P0:让分身真正工作(最小可行)
|
||||
|
||||
**目标**:创建分身时同步到 OpenClaw `agents.list`,聊天时传递 `agentId`
|
||||
**目标**:创建分身时同步到 ZCLAW `agents.list`,聊天时传递 `agentId`
|
||||
|
||||
**关键修改**:
|
||||
|
||||
1. **`plugins/zclaw-ui/index.ts`**
|
||||
- `createClone` 时调用 OpenClaw API 添加到 `agents.list`
|
||||
- `createClone` 时调用 ZCLAW API 添加到 `agents.list`
|
||||
- `deleteClone` 时从 `agents.list` 移除
|
||||
- 新增 `zclaw.agents.sync` 方法
|
||||
|
||||
@@ -172,17 +172,17 @@ ZClaw 数据模型:
|
||||
- `sendMessage` 时传递 `currentAgent.id` 作为 `agentId`
|
||||
|
||||
4. **新增 Gateway RPC**
|
||||
- `zclaw.config.get` - 读取 OpenClaw 配置
|
||||
- `zclaw.config.get` - 读取 ZCLAW 配置
|
||||
- `zclaw.config.patch` - 修改配置
|
||||
|
||||
**验收标准**:
|
||||
- [ ] 创建分身后,`openclaw.json` 的 `agents.list` 包含新 Agent
|
||||
- [ ] 创建分身后,`zclaw.json` 的 `agents.list` 包含新 Agent
|
||||
- [ ] 切换分身后,聊天请求携带正确的 `agentId`
|
||||
- [ ] 每个分身有独立的对话上下文
|
||||
|
||||
### P1:设置页 Runtime 化
|
||||
|
||||
**目标**:设置修改直接影响 OpenClaw Runtime
|
||||
**目标**:设置修改直接影响 ZCLAW Runtime
|
||||
|
||||
**关键修改**:
|
||||
|
||||
@@ -201,7 +201,7 @@ ZClaw 数据模型:
|
||||
- 配置变更后显示"需要重启"提示(如需要)
|
||||
|
||||
**验收标准**:
|
||||
- [ ] 模型选择后,`openclaw.json` 的 `agents.defaults.model` 更新
|
||||
- [ ] 模型选择后,`zclaw.json` 的 `agents.defaults.model` 更新
|
||||
- [ ] 添加技能目录后,`skills.load.extraDirs` 更新
|
||||
- [ ] Gateway 重启后配置生效
|
||||
|
||||
@@ -242,7 +242,7 @@ ZClaw 数据模型:
|
||||
| `desktop/src/components/CloneManager.tsx` | 显示同步状态 |
|
||||
| `desktop/src/components/RightPanel.tsx` | 显示真实 Agent 数据 |
|
||||
| `desktop/src/components/Settings/*.tsx` | 改造为 Runtime 配置面板 |
|
||||
| `config/openclaw.default.json` | 更新默认 Agent 模板 |
|
||||
| `config/zclaw.default.json` | 更新默认 Agent 模板 |
|
||||
|
||||
---
|
||||
|
||||
@@ -251,7 +251,7 @@ ZClaw 数据模型:
|
||||
| 风险 | 缓解措施 |
|
||||
|------|----------|
|
||||
| 数据迁移复杂 | 提供迁移脚本,保留 `zclaw-data.json` 作为备份 |
|
||||
| OpenClaw 版本兼容 | 检测 OpenClaw 版本,低版本降级到兼容模式 |
|
||||
| ZCLAW 版本兼容 | 检测 ZCLAW 版本,低版本降级到兼容模式 |
|
||||
| 破坏现有功能 | 灰度发布,支持回滚 |
|
||||
| 性能下降 | 懒加载 Agent 配置,缓存 RPC 结果 |
|
||||
|
||||
@@ -259,12 +259,12 @@ ZClaw 数据模型:
|
||||
|
||||
## 七、确认的方案
|
||||
|
||||
**选择:方案 A - 完全对齐 OpenClaw**
|
||||
**选择:方案 A - 完全对齐 ZCLAW**
|
||||
|
||||
理由:
|
||||
1. 符合 `openclaw-deep-dive.md` 的设计哲学
|
||||
1. 符合 `zclaw-deep-dive.md` 的设计哲学
|
||||
2. 分身真正有独立人格、记忆、工具权限
|
||||
3. 设置页可以直接操作 OpenClaw 配置
|
||||
3. 设置页可以直接操作 ZCLAW 配置
|
||||
4. 长期维护成本最低
|
||||
|
||||
---
|
||||
@@ -277,7 +277,7 @@ ZClaw 数据模型:
|
||||
|
||||
**修改点**:
|
||||
1. `createClone` 方法增加:
|
||||
- 调用 OpenClaw 内部 API 将分身添加到 `agents.list`
|
||||
- 调用 ZCLAW 内部 API 将分身添加到 `agents.list`
|
||||
- 设置 `agentId` 字段关联分身与 Agent
|
||||
2. `deleteClone` 方法增加:
|
||||
- 从 `agents.list` 移除对应 Agent
|
||||
@@ -315,7 +315,7 @@ ZClaw 数据模型:
|
||||
**文件**: `desktop/src/lib/gateway-client.ts` + `plugins/zclaw-ui/index.ts`
|
||||
|
||||
**新增方法**:
|
||||
- `zclaw.config.get` - 读取 OpenClaw 配置
|
||||
- `zclaw.config.get` - 读取 ZCLAW 配置
|
||||
- `zclaw.config.patch` - 修改配置(不重启)
|
||||
- `zclaw.config.apply` - 热更新配置(如需重启)
|
||||
|
||||
@@ -335,7 +335,7 @@ ZClaw 数据模型:
|
||||
|
||||
### P0 完成标准
|
||||
|
||||
- [ ] 创建分身后,`~/.openclaw/openclaw.json` 的 `agents.list` 包含新 Agent
|
||||
- [ ] 创建分身后,`~/.zclaw/zclaw.json` 的 `agents.list` 包含新 Agent
|
||||
- [ ] 删除分身后,对应 Agent 从 `agents.list` 移除
|
||||
- [ ] 切换分身后,聊天请求携带正确的 `agentId`
|
||||
- [ ] 每个分身有独立的对话上下文(不串聊)
|
||||
|
||||
Reference in New Issue
Block a user