## Major Features ### Streaming Response System - Implement LlmDriver trait with `stream()` method returning async Stream - Add SSE parsing for Anthropic and OpenAI API streaming - Integrate Tauri event system for frontend streaming (`stream:chunk` events) - Add StreamChunk types: Delta, ToolStart, ToolEnd, Complete, Error ### MCP Protocol Implementation - Add MCP JSON-RPC 2.0 types (mcp_types.rs) - Implement stdio-based MCP transport (mcp_transport.rs) - Support tool discovery, execution, and resource operations ### Browser Hand Implementation - Complete browser automation with Playwright-style actions - Support Navigate, Click, Type, Scrape, Screenshot, Wait actions - Add educational Hands: Whiteboard, Slideshow, Speech, Quiz ### Security Enhancements - Implement command whitelist/blacklist for shell_exec tool - Add SSRF protection with private IP blocking - Create security.toml configuration file ## Test Improvements - Fix test import paths (security-utils, setup) - Fix vi.mock hoisting issues with vi.hoisted() - Update test expectations for validateUrl and sanitizeFilename - Add getUnsupportedLocalGatewayStatus mock ## Documentation Updates - Update architecture documentation - Improve configuration reference - Add quick-start guide updates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
12 KiB
OpenMAIC vs ZCLAW 功能对比分析
分析日期: 2026-03-22 目的: 论证 ZCLAW 是否能实现 OpenMAIC 相同的产出
1. 核心功能对比
1.1 一键课堂生成
| 功能点 | OpenMAIC 实现 | ZCLAW 现状 | 差距分析 |
|---|---|---|---|
| 主题输入 | ✅ 文本输入框 | ✅ 聊天界面 | 无差距 |
| 文档上传 | ✅ PDF/Word 解析 | ⚠️ 需实现 | 缺少文档解析能力 |
| 大纲生成 | ✅ Stage 1 LLM 生成 | ⚠️ Skill 提示模板 | 缺少执行流程 |
| 场景生成 | ✅ Stage 2 并行生成 | ⚠️ Skill 提示模板 | 缺少执行流程 |
| 生成 UI | ✅ 进度条 + 预览 | ❌ 无 | 需要前端开发 |
结论: 🟡 部分可实现 - 核心提示模板已有,缺少执行流程和 UI
1.2 多智能体课堂
| 功能点 | OpenMAIC 实现 | ZCLAW 现状 | 差距分析 |
|---|---|---|---|
| Agent 角色定义 | ✅ AgentConfig 结构 | ✅ Agent 分身系统 | 无差距 |
| 多 Agent 编排 | ✅ LangGraph Director | ✅ A2A Router | 需要编排逻辑 |
| Agent 间通信 | ✅ LangGraph 状态传递 | ✅ A2A 协议 | 无差距 |
| 角色调度策略 | ✅ priority + LLM 决策 | ⚠️ 有 priority,无调度器 | 需要实现 Director |
| 流式响应 | ✅ SSE | ✅ Tauri 事件 | 无差距 |
结论: 🟡 部分可实现 - 协议层完成,缺少编排调度器
1.3 场景类型支持
| 场景类型 | OpenMAIC 实现 | ZCLAW 现状 | 差距分析 |
|---|---|---|---|
| 幻灯片 | ✅ Canvas 渲染引擎 | ⚠️ slideshow.HAND.toml | 缺少渲染器 |
| 测验 | ✅ Quiz 渲染器 + 评估 | ⚠️ quiz.HAND.toml | 缺少渲染器和评估逻辑 |
| 交互式 HTML | ✅ iframe 嵌入 | ❌ 无 | 需要新 Hand |
| PBL 项目制 | ✅ PBL 模块 | ❌ 无 | 需要新 Hand |
| 讨论 | ✅ discussion Action | ⚠️ A2A 可实现 | 需要编排 |
结论: 🟡 部分可实现 - 配置文件已有,缺少渲染器
1.4 白板 & 语音
| 功能点 | OpenMAIC 实现 | ZCLAW 现状 | 差距分析 |
|---|---|---|---|
| 白板绘制 | ✅ SVG Canvas | ⚠️ whiteboard.HAND.toml | 缺少渲染器 |
| 文本绘制 | ✅ wb_draw_text | ⚠️ 配置已定义 | 缺少实现 |
| 图形绘制 | ✅ wb_draw_shape | ⚠️ 配置已定义 | 缺少实现 |
| 公式渲染 | ✅ KaTeX | ⚠️ 配置已定义 | 缺少实现 |
| 图表绘制 | ✅ ECharts | ⚠️ 配置已定义 | 缺少实现 |
| 语音合成 | ✅ Azure/浏览器 TTS | ⚠️ speech.HAND.toml | 缺少实现 |
结论: 🔴 需要开发 - 配置完成,缺少前端渲染实现
1.5 导出功能
| 功能点 | OpenMAIC 实现 | ZCLAW 现状 | 差距分析 |
|---|---|---|---|
| PPTX 导出 | ✅ pptxgenjs | ❌ 无 | 需要新 Hand |
| HTML 导出 | ✅ 交互式网页 | ❌ 无 | 需要新 Hand |
| PDF 导出 | ❌ 无 | ❌ 无 | 都不支持 |
结论: 🔴 需要开发 - 完全缺失
2. 架构层面对比
2.1 生成流水线
OpenMAIC:
用户输入 → Stage 1 (大纲) → Stage 2 (场景) → 完整课堂
└── LLM 调用 ──┘ └── 并行 LLM ──┘
ZCLAW 现状:
用户输入 → Skill 提示模板 → ❓ 执行层缺失 → ❓ 渲染层缺失
差距:
- ❌ 没有两阶段流水线执行器
- ❌ 没有并行生成调度
- ❌ 没有生成进度跟踪
2.2 多 Agent 编排
OpenMAIC (LangGraph):
// 伪代码
Director Graph:
START → director → (next?) → agent_generate → director
→ (end?) → END
Director 决策:
- 单 Agent: 纯代码逻辑
- 多 Agent: LLM 选择下一个发言者
ZCLAW 现状 (A2A):
// 已实现
A2aRouter:
- Direct 消息 ✅
- Group 消息 ✅
- Broadcast 消息 ✅
- 能力发现 ✅
// 缺失
Director:
- Agent 调度逻辑 ❌
- LLM 决策选择 ❌
- 轮次管理 ❌
差距:
- ❌ 没有 Director 调度器
- ❌ 没有 LLM 驱动的 Agent 选择
- ❌ 没有轮次/状态管理
2.3 动作执行引擎
OpenMAIC:
class ActionEngine {
async execute(action: Action): Promise<void> {
switch (action.type) {
case 'spotlight': // Fire-and-forget
case 'laser':
case 'speech': // 同步等待 TTS
case 'wb_*': // 同步等待渲染
}
}
}
ZCLAW 现状:
// Hands 系统
Hand trait:
- execute() 接口 ✅
- needs_approval ✅
- dependencies ✅
// 教育类 Hands (仅配置)
whiteboard.HAND.toml // 定义了动作,无实现
slideshow.HAND.toml // 定义了动作,无实现
speech.HAND.toml // 定义了动作,无实现
quiz.HAND.toml // 定义了动作,无实现
差距:
- ❌ Hand 只有配置,没有实际实现
- ❌ 没有前端渲染组件
- ❌ 没有动作到 UI 的绑定
3. 缺失能力清单
3.1 后端缺失
| 优先级 | 模块 | 描述 | 状态 |
|---|---|---|---|
| 🔴 P0 | Director 调度器 | 多 Agent 编排逻辑 | ✅ 已完成 |
| 🔴 P0 | 两阶段生成流水线 | 大纲 → 场景生成执行器 | ✅ 已完成 |
| 🟠 P1 | 文档解析 | PDF/Word 内容提取 | ❌ 待实现 |
| 🟠 P1 | Hand 执行器实现 | whiteboard/speech/quiz 后端逻辑 | ⚠️ 配置完成 |
| 🟡 P2 | PPTX 导出 | 幻灯片导出能力 | ❌ 待实现 |
3.2 前端缺失
| 优先级 | 组件 | 描述 | 工作量 |
|---|---|---|---|
| 🔴 P0 | 课堂生成 UI | 输入主题、进度显示 | 2-3 天 |
| 🔴 P0 | 白板渲染器 | SVG Canvas 绘制 | 5-7 天 |
| 🔴 P0 | 幻灯片渲染器 | 课堂内容展示 | 5-7 天 |
| 🟠 P1 | 测验组件 | 答题交互 UI | 3-5 天 |
| 🟠 P1 | Agent 头像 | 多角色视觉展示 | 1-2 天 |
| 🟡 P2 | 交互式 HTML | iframe 嵌入渲染 | 1-2 天 |
3.3 集成缺失
| 优先级 | 功能 | 描述 | 工作量 |
|---|---|---|---|
| 🔴 P0 | TTS 集成 | 语音合成能力 | 1-2 天 |
| 🟠 P1 | 课堂状态机 | 播放/暂停/跳转 | 2-3 天 |
| 🟠 P1 | 课堂持久化 | 保存/加载课堂 | 1-2 天 |
4. 可实现性论证
4.1 当前能实现什么?
✅ 已完全具备能力:
- 多 Agent 通信协议 (A2A)
- Agent 注册和能力发现
- 消息路由 (Direct/Group/Broadcast)
- 基础聊天交互
🟡 需要少量开发:
- 多 Agent 编排 (需要 Director 调度器)
- 课堂生成 (需要流水线执行器)
- 简单的 Agent 角色扮演
🔴 需要大量开发:
- 白板/幻灯片渲染
- 语音合成集成
- 测验交互
- 内容导出
4.2 最小可行产品 (MVP) 路径
Phase 1: 基础多 Agent 对话 (1 周)
用户 → Orchestrator Agent → Teacher Agent → 回复
↓
Student Agent → 提问
Phase 2: 课堂生成流水线 (1-2 周)
主题 → LLM 生成大纲 → 展示给用户
→ LLM 生成场景 → Markdown 渲染
Phase 3: 交互式课堂 (2-3 周)
场景 → 白板绘制 → 用户可见
→ 语音讲解 → TTS 播放
→ 测验互动 → 用户答题
5. 结论
5.1 能否实现相同产出?
| 维度 | 结论 | 说明 |
|---|---|---|
| 功能等价 | 🟡 部分 | 核心架构已有,缺少渲染层 |
| 体验等价 | 🔴 不能 | 缺少白板、幻灯片等可视化组件 |
| 架构等价 | ✅ 是 | A2A + Director 不弱于 LangGraph |
| 执行层 | ✅ 是 | 两阶段生成流水线已实现 |
5.2 差距总结
已完成的 (本次工作):
- ✅ A2A 协议通信层 (消息路由、能力发现)
- ✅ Director 调度器 (多 Agent 编排)
- ✅ 两阶段生成流水线 (大纲 + 场景生成)
- ✅ 教育类 Hands 配置定义
- ✅ 课堂生成 Skill 提示模板
- ✅ 19 个单元测试全部通过
还需要完成的:
- 前端渲染层 - 白板/幻灯片/测验 UI 组件
- Hand 执行实现 - 将配置映射到实际操作
- LLM 集成 - 连接生成流水线与 LLM 驱动
- TTS 集成 - 语音合成能力
5.3 建议的下一步
优先级排序:
P0 (必须):
├── Director 调度器 (后端)
├── 两阶段生成流水线 (后端)
└── 基础课堂 UI (前端)
P1 (重要):
├── 白板渲染器 (前端)
├── TTS 集成 (后端)
└── 测验组件 (前端)
P2 (增强):
├── 幻灯片渲染器 (前端)
├── PPTX 导出 (后端)
└── 文档解析 (后端)
预估总工作量: 4-6 周 (1 人全职)
6. 风险提示
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| 前端渲染复杂度高 | 白板/幻灯片开发时间长 | 可先实现 Markdown 渲染 |
| TTS 依赖外部服务 | 需要付费 API | 优先使用浏览器原生 TTS |
| 多 Agent 编排复杂 | 调度逻辑难以调试 | 先实现简单的轮询调度 |
附录: 功能对照矩阵 (最新更新)
| OpenMAIC 功能 | ZCLAW 协议层 | ZCLAW 执行层 | ZCLAW 渲染层 | 总体状态 |
|---|---|---|---|---|
| 一键课堂生成 | ✅ | ✅ | ❌ | 🟡 |
| 多智能体课堂 | ✅ | ✅ | ✅ | 🟢 |
| 幻灯片场景 | ✅ | ✅ | ❌ | 🟡 |
| 测验场景 | ✅ | ✅ | ❌ | 🟡 |
| 白板绘制 | ✅ | ✅ | ❌ | 🟡 |
| 语音讲解 | ✅ | ✅ | N/A | 🟢 |
| PPTX 导出 | ✅ | ❌ | N/A | 🔴 |
| HTML 导出 | ✅ | ❌ | N/A | 🔴 |
图例: ✅ 完成 | ⚠️ 部分完成 | ❌ 未实现 | 🟢 可用 | 🟡 部分可用 | 🔴 不可用
更新日志
2026-03-22 Phase 2 完成的工作
-
Hand 执行器实现 (
crates/zclaw-hands/src/hands/)whiteboard.rs- 白板绘制执行器 (9 种动作)speech.rs- 语音合成执行器 (7 种动作)slideshow.rs- 幻灯片控制执行器 (10 种动作)quiz.rs- 测验生成执行器 (10 种动作)- 21 个单元测试全部通过
-
LLM 集成 (
crates/zclaw-kernel/src/generation.rs)- 添加
with_driver()方法支持 LLM 驱动 - 实现
generate_outline_with_llm()- LLM 大纲生成 - 实现
generate_scene_with_llm()- LLM 场景生成 - JSON 解析和结构化输出提取
- System prompt 设计 (大纲 + 场景)
- 添加
-
TTS 集成 (
crates/zclaw-hands/src/hands/speech.rs)- 多 Provider 支持 (Browser/Azure/OpenAI/ElevenLabs/Local)
- 语音配置 (rate/pitch/volume)
- 播放控制 (pause/resume/stop)
- 多语言支持
2026-03-22 Phase 1 完成的工作
-
A2A 协议完善 (
crates/zclaw-protocols/src/a2a.rs)- 实现完整的消息路由 (Direct/Group/Broadcast)
- 添加能力发现和索引机制
- 5 个单元测试全部通过
-
Director 调度器 (
crates/zclaw-kernel/src/director.rs)- 多种调度策略 (RoundRobin/Priority/Random/LLM/Manual)
- Agent 角色管理 (Teacher/Assistant/Student/Moderator/Expert)
- 会话状态跟踪和轮次管理
- 8 个单元测试全部通过
-
两阶段生成流水线 (
crates/zclaw-kernel/src/generation.rs)- Stage 1: 大纲生成
- Stage 2: 场景生成
- 支持多种场景类型 (Slide/Quiz/Interactive/PBL/Discussion/Media/Text)
- 完整的 Classroom 数据结构
- 6 个单元测试全部通过
-
教育类 Hands 配置
whiteboard.HAND.toml- 白板绘制能力slideshow.HAND.toml- 幻灯片控制能力speech.HAND.toml- 语音合成能力quiz.HAND.toml- 测验生成能力
-
课堂生成 Skill
skills/classroom-generator/SKILL.md- 完整的技能定义