Files
zclaw_openfang/docs/plans/immutable-imagining-naur.md
iven 0eb30c0531 docs: reorganize documentation structure
- Create docs/README.md as documentation index
- Add WORK_SUMMARY_2026-03-16.md for today's work
- Move test reports to docs/test-reports/
- Move completed plans to docs/archive/completed-plans/
- Move research reports to docs/archive/research-reports/
- Move technical reference to docs/knowledge-base/
- Move all plans from root plans/ to docs/plans/

New structure:
docs/
├── README.md                         # Documentation index
├── DEVELOPMENT.md                    # Development guide
├── OPENVIKING_INTEGRATION.md         # OpenViking integration
├── USER_MANUAL.md                    # User manual
├── ZCLAW_AGENT_INTELLIGENCE_EVOLUTION.md
├── archive/                          # Archived documents
├── knowledge-base/                   # Technical knowledge
├── plans/                            # Execution plans
└── test-reports/                     # Test reports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 08:21:01 +08:00

14 KiB
Raw Blame History

ZClaw: 从 OpenClaw 迁移到 OpenFang 可行性方案

规划日期: 2026-03-13 目标: 制定从 OpenClaw 到 OpenFang 的渐进式迁移策略,实现平稳过渡


一、背景与动机

1.1 当前架构 (OpenClaw)

┌─────────────────────────────────────────────────────────────────┐
│                    ZClaw Desktop (当前)                         │
├─────────────────────────────────────────────────────────────────┤
│   React 19 UI → Zustand Store → GatewayClient → OpenClaw       │
│   技术栈: Tauri 2.0 + TypeScript + Node.js Gateway              │
│   内存: >1GB | 启动: 2-5s | 安装: 500MB                          │
└─────────────────────────────────────────────────────────────────┘

1.2 目标架构 (OpenFang)

┌─────────────────────────────────────────────────────────────────┐
│                    ZClaw Desktop (OpenFang)                     │
├─────────────────────────────────────────────────────────────────┤
│   React 19 UI → Zustand Store → OpenFangClient → OpenFang      │
│   技术栈: Tauri 2.0 + TypeScript + Rust Gateway                 │
│   内存: ~40MB | 启动: 180ms | 安装: 32MB                         │
└─────────────────────────────────────────────────────────────────┘

1.3 迁移动机

维度 OpenClaw OpenFang 提升
启动速度 5.98s 180ms 33x 更快
内存占用 394MB 40MB 90% 更少
安装大小 500MB 32MB 94% 更小
安全防护 3 层 16 层 企业级安全
通道支持 20+ 40+ 覆盖更广
自主能力 7 Hands 从被动到主动

二、核心差异分析

2.1 协议差异

方面 OpenClaw OpenFang
WebSocket URL ws://127.0.0.1:18789 ws://127.0.0.1:4200/ws
协议格式 自定义 JSON 帧 标准 JSON + gRPC
认证方式 Ed25519 设备签名 Ed25519 + JWT

2.2 配置差异

方面 OpenClaw OpenFang
配置目录 ~/.openclaw/ ~/.openfang/
配置格式 YAML/JSON TOML
插件系统 TypeScript (index.ts) SKILL.md + WASM

2.3 API 差异

功能 OpenClaw RPC OpenFang API
发送消息 agent chat / /api/chat
列出 Agent zclaw.clones.list GET /api/agents
获取配置 config.get GET /api/config
触发技能 插件系统 skill_trigger
Hand 自动化 hand_trigger
Workflow 基础 workflow_execute

三、迁移策略:渐进式双轨

3.1 策略原则

  1. 双版本并行: 保持 OpenClaw 可用,同时开发 OpenFang
  2. 适配层抽象: 通过接口隔离后端差异
  3. 功能对等优先: 先保证核心功能,再添加新特性
  4. 灰度发布: Beta 测试验证后全面切换

3.2 迁移阶段

Phase 1 (2周): 基础设施 ──────────────────────────────────────────►
Phase 2 (2周): 客户端实现 ────────────────────────────────────────►
Phase 3 (2周): 状态迁移 ──────────────────────────────────────────►
Phase 4 (3周): 插件迁移 ──────────────────────────────────────────►
Phase 5 (2周): Tauri 后端 ────────────────────────────────────────►
Phase 6 (3周): UI 增强 ───────────────────────────────────────────►
Phase 7 (2周): 测试验证 ──────────────────────────────────────────►
────────────────────────────────────────────────────────────────────
总工期: 16 周 (约 4 个月)

四、详细实施计划

Phase 1: 基础设施 (Week 1-2)

目标: 建立迁移基础架构

关键任务:

  1. 创建 GatewayBackend 接口抽象
  2. 创建 OpenFangClient 骨架
  3. 配置双后端切换机制
  4. 设置 OpenFang 开发环境

交付物:

  • desktop/src/lib/types/gateway-backend.ts - 接口定义
  • desktop/src/lib/openfang-client.ts - 客户端骨架
  • desktop/src/lib/backend-factory.ts - 后端工厂

Phase 2: 客户端实现 (Week 3-4)

目标: 完整实现 OpenFang 客户端

关键文件: gateway-client.ts

修改内容:

// 1. 抽取接口
interface GatewayBackend {
  connect(): Promise<void>;
  disconnect(): void;
  chat(message: string, opts?: ChatOptions): Promise<{runId: string}>;
  onStream(callback: StreamCallback): () => void;
  // ... 其他方法
}

// 2. OpenClaw 实现 (现有代码重构)
class OpenClawBackend implements GatewayBackend { ... }

// 3. OpenFang 实现 (新建)
class OpenFangBackend implements GatewayBackend {
  private ws: WebSocket;
  private url = 'ws://127.0.0.1:4200/ws';

  async connect(): Promise<void> {
    // OpenFang 认证协议
  }

  async chat(message: string, opts?: ChatOptions): Promise<{runId: string}> {
    // OpenFang chat 格式
  }
}

Phase 3: 状态迁移 (Week 5-6)

目标: 更新状态管理层支持双后端

关键文件: gatewayStore.ts

修改内容:

interface GatewayStore {
  // 新增
  backendType: 'openclaw' | 'openfang';
  switchBackend(type: 'openclaw' | 'openfang'): void;

  // 修改 connect 方法
  connect: async (url?, token?) => {
    const backend = getBackendFactory().create(get().backendType);
    await backend.connect(url, token);
  }
}

Phase 4: 插件迁移 (Week 7-9)

目标: 迁移现有插件到 OpenFang 格式

插件 当前格式 目标格式 复杂度
zclaw-chinese-models TypeScript TOML 配置
zclaw-feishu TypeScript Rust/WASM
zclaw-ui TypeScript RPC REST API

迁移方案:

plugins/
├── zclaw-chinese-models/
│   ├── openclaw.plugin.json  → 删除
│   └── index.ts              → 转换为 providers.toml
│
├── zclaw-feishu/
│   └── index.ts              → 迁移到 OpenFang channels
│
└── zclaw-ui/
    └── index.ts              → 拆分为 REST 端点

Phase 5: Tauri 后端 (Week 10-11)

目标: 更新 Rust 后端支持 OpenFang

关键文件: lib.rs

修改内容:

// 新增 OpenFang 命令
#[tauri::command]
async fn openfang_status() -> Result<OpenFangStatus, String> { ... }

#[tauri::command]
async fn openfang_start() -> Result<(), String> { ... }

#[tauri::command]
async fn openfang_stop() -> Result<(), String> { ... }

// 新增配置迁移命令
#[tauri::command]
async fn migrate_to_openfang() -> Result<MigrationResult, String> { ... }

Phase 6: UI 增强 (Week 12-14)

目标: 添加 OpenFang 特有的 UI 功能

新增组件:

  1. HandsPanel.tsx - Hands 管理界面
  2. WorkflowEditor.tsx - 工作流编辑器
  3. TriggerManager.tsx - 触发器管理
  4. AuditLogs.tsx - 审计日志查看

修改组件:

  1. SettingsLayout.tsx - 添加后端切换选项
  2. General.tsx - 添加 OpenFang 配置项

Phase 7: 测试验证 (Week 15-16)

目标: 全面测试和验证

测试范围:

  • 单元测试: 新客户端、适配层
  • 集成测试: 端到端消息流
  • 性能测试: 启动时间、内存占用
  • 迁移测试: 配置迁移正确性

五、风险评估与缓解

5.1 技术风险

风险 级别 缓解措施
协议不兼容 创建适配层,保持双后端
插件迁移复杂 分阶段迁移,保持 TypeScript 桥接
OpenFang 不成熟 持续关注上游,建立社区联系
配置格式差异 构建自动迁移工具

5.2 运营风险

风险 级别 缓解措施
用户困惑 清晰文档,渐进发布
数据丢失 自动备份,非破坏性迁移
支持负担 FAQ故障排除指南

5.3 回滚策略

// 环境变量切换
const USE_OPENFANG = process.env.ZCLAW_USE_OPENFANG === 'true';

// localStorage 切换
const backendType = localStorage.getItem('zclaw-backend') || 'openclaw';

// 一键回滚
function rollbackToOpenClaw() {
  localStorage.setItem('zclaw-backend', 'openclaw');
  window.location.reload();
}

六、验证方案

6.1 功能验证清单

核心功能:

  • WebSocket 连接和认证
  • 消息发送和流式接收
  • Agent/Clone CRUD 操作
  • 频道管理 (飞书)
  • 技能加载和执行
  • 使用统计
  • 配置管理

OpenFang 新特性:

  • Hand 触发 (Clip, Lead, Researcher 等)
  • Workflow 执行
  • 16 层安全验证
  • 审计日志访问

6.2 性能基准

指标 OpenClaw 基线 OpenFang 目标
冷启动 5.98s < 500ms
空闲内存 394MB < 100MB
聊天延迟 100ms < 50ms
安装大小 500MB < 100MB

七、关键文件清单

文件 修改类型 说明
gateway-client.ts 重构 抽取接口,创建 OpenFang 实现
gatewayStore.ts 修改 添加后端切换逻辑
chatStore.ts 修改 适配新事件格式
lib.rs 扩展 添加 OpenFang 管理命令
zclaw-ui/index.ts 迁移 转换为 REST API
zclaw-chinese-models/index.ts 迁移 转换为 TOML 配置
zclaw-feishu/index.ts 迁移 使用 OpenFang channel

八、时间线总结

阶段 周期 开始 结束 关键交付物
Phase 1 2周 Week 1 Week 2 OpenFangClient 骨架
Phase 2 2周 Week 3 Week 4 完整客户端 + 流式处理
Phase 3 2周 Week 5 Week 6 更新后的 stores
Phase 4 3周 Week 7 Week 9 迁移后的插件
Phase 5 2周 Week 10 Week 11 Rust OpenFang 支持
Phase 6 3周 Week 12 Week 14 Hands/Workflow UI
Phase 7 2周 Week 15 Week 16 测试套件,验证报告

总工期: 16 周 (约 4 个月)


九、结论与建议

9.1 核心价值

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   🚀 性能33x 启动速度 + 90% 内存节省                          │
│                                                                 │
│   🔒 安全16 层纵深防御 + 金融级合规                           │
│                                                                 │
│   🤖 智能Hands 自主系统 + Workflow 引擎                       │
│                                                                 │
│   📈 商业:企业市场拓展 + 定价提升空间                          │
│                                                                 │
│   ⚠️  成本16 周 (4个月) 迁移周期                              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

9.2 决策建议

目标 建议
追求企业市场 强烈建议迁移
追求差异化竞争 建议迁移
目标是内容创作者/销售 强烈建议迁移
资源有限 ⚠️ 渐进评估
追求快速迭代 ⚠️ 保持 OpenClaw关注 OpenFang

9.3 下一步行动

  1. 立即: 确认迁移决策,分配资源
  2. Week 1: 创建 GatewayBackend 接口
  3. Week 2: 搭建 OpenFang 开发环境
  4. Week 3-4: 实现 OpenFangClient

规划日期: 2026-03-13 版本: v1.0