feat(pipeline): implement Pipeline DSL system for automated workflows
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

Add complete Pipeline DSL system including:
- Rust backend (zclaw-pipeline crate) with parser, executor, and state management
- Frontend components: PipelinesPanel, PipelineResultPreview, ClassroomPreviewer
- Pipeline recommender for Agent conversation integration
- 5 pipeline templates: education, marketing, legal, research, productivity
- Documentation for Pipeline DSL architecture

Pipeline DSL enables declarative workflow definitions with:
- YAML-based configuration
- Expression resolution (${inputs.topic}, ${steps.step1.output})
- LLM integration, parallel execution, file export
- Agent smart recommendations in conversations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
iven
2026-03-25 00:52:12 +08:00
parent 0179f947aa
commit 9c781f5f2a
30 changed files with 6944 additions and 24 deletions

View File

@@ -0,0 +1,403 @@
# Pipeline DSL 系统
> **版本**: v0.3.0
> **更新日期**: 2026-03-25
> **状态**: ✅ 已实现
> **架构**: Rust 后端 (zclaw-pipeline crate) + React 前端
---
## 一、概述
Pipeline DSL 是 ZCLAW 的自动化工作流编排系统,允许用户通过声明式 YAML 配置定义多步骤任务。
### 1.1 核心特性
- **声明式配置**: 使用 YAML 定义工作流步骤
- **状态管理**: ExecutionContext 管理步骤间数据传递
- **表达式解析**: 支持 `${inputs.topic}``${steps.step1.output}` 等表达式
- **并行执行**: 支持 `parallel` 动作并行处理多个项目
- **LLM 集成**: 内置 `llm_generate` 动作调用大语言模型
- **文件导出**: 支持 PPTX/HTML/PDF/Markdown 等格式导出
- **Agent 集成**: 在对话中智能推荐相关 Pipeline
### 1.2 设计原则
- **用户只看到 Pipeline**: Hands/Skills 作为内部实现被隐藏
- **行业扩展**: 支持垂直扩展(不同学科)和水平扩展(跨行业)
- **智能推荐**: Agent 主动识别用户意图,推荐合适的 Pipeline
---
## 二、架构设计
### 2.1 分层架构
```
┌─────────────────────────────────────────────────────────┐
│ User Interface │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Pipeline List│ │ Pipeline Run│ │ Result Preview │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Pipeline Engine │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ DSL Parser │ │ Executor │ │ State Manager │ │
│ │ YAML/TOML │ │ DAG Runner │ │ Context Store │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────┐ ┌─────────────────┐
│ Skills (隐藏) │ │ Hands (隐藏)│ │ Exporters │
│ prompt templates│ │ executors │ │ pptx/html/pdf │
└─────────────────┘ └─────────────┘ └─────────────────┘
```
### 2.2 核心组件
| 组件 | 职责 | 位置 |
|------|------|------|
| PipelineParser | YAML 解析 | `crates/zclaw-pipeline/src/parser.rs` |
| PipelineExecutor | 执行引擎 | `crates/zclaw-pipeline/src/executor.rs` |
| ExecutionContext | 状态管理 | `crates/zclaw-pipeline/src/state.rs` |
| ActionRegistry | 动作注册 | `crates/zclaw-pipeline/src/actions/mod.rs` |
| PipelineClient | 前端客户端 | `desktop/src/lib/pipeline-client.ts` |
| PipelinesPanel | UI 组件 | `desktop/src/components/PipelinesPanel.tsx` |
| PipelineRecommender | 智能推荐 | `desktop/src/lib/pipeline-recommender.ts` |
---
## 三、Pipeline 配置格式
### 3.1 基本结构
```yaml
apiVersion: zclaw/v1
kind: Pipeline
metadata:
name: my-pipeline
displayName: 我的 Pipeline
category: productivity
description: 这是一个示例 Pipeline
tags:
- 示例
- 测试
icon: 🚀
author: ZCLAW
version: 1.0.0
spec:
inputs:
- name: topic
type: string
required: true
label: 主题
placeholder: 请输入主题
steps:
- id: step1
description: 第一步
action:
type: llm_generate
template: |
处理以下主题: {{topic}}
json_mode: true
temperature: 0.7
max_tokens: 1000
outputs:
result: ${steps.step1.output}
on_error: stop
timeout_secs: 300
```
### 3.2 输入类型
| 类型 | 说明 | 默认值 |
|------|------|--------|
| `string` | 单行文本 | `""` |
| `text` | 多行文本 | `""` |
| `number` | 数字 | `0` |
| `boolean` | 布尔值 | `false` |
| `select` | 单选 | `null` |
| `multi-select` | 多选 | `[]` |
| `file` | 文件 | `null` |
### 3.3 动作类型
| 动作 | 说明 | 示例 |
|------|------|------|
| `llm_generate` | LLM 生成 | 文本生成、数据分析 |
| `parallel` | 并行执行 | 批量处理 |
| `sequential` | 顺序执行 | 条件分支 |
| `condition` | 条件判断 | 流程控制 |
| `skill` | 调用技能 | 使用预定义技能 |
| `hand` | 调用 Hand | 浏览器操作、文件处理 |
| `file_export` | 文件导出 | PPTX/HTML/PDF |
| `http_request` | HTTP 请求 | API 调用 |
| `set_var` | 设置变量 | 数据转换 |
| `delay` | 延迟 | 等待操作 |
### 3.4 表达式语法
```yaml
# 输入参数
${inputs.topic}
# 步骤输出
${steps.step1.output}
${steps.step1.output.items}
# 循环变量 (在 parallel 中)
${item}
${index}
# 变量引用
${vars.my_variable}
# 函数调用
${chrono::Utc::now().to_rfc3339()}
```
---
## 四、已实现的 Pipeline 模板
### 4.1 教育类 (education)
| Pipeline | 说明 | 文件 |
|----------|------|------|
| 互动课堂生成器 | 输入课题,自动生成完整课件 | `pipelines/education/classroom.yaml` |
### 4.2 营销类 (marketing)
| Pipeline | 说明 | 文件 |
|----------|------|------|
| 营销方案生成器 | 输入产品信息,生成完整营销策略 | `pipelines/marketing/campaign.yaml` |
### 4.3 法律类 (legal)
| Pipeline | 说明 | 文件 |
|----------|------|------|
| 合同智能审查 | 上传合同,识别风险条款并生成建议 | `pipelines/legal/contract-review.yaml` |
### 4.4 研究类 (research)
| Pipeline | 说明 | 文件 |
|----------|------|------|
| 文献综述生成器 | 输入研究主题,生成文献综述报告 | `pipelines/research/literature-review.yaml` |
### 4.5 生产力类 (productivity)
| Pipeline | 说明 | 文件 |
|----------|------|------|
| 智能会议纪要 | 输入会议内容,生成结构化纪要 | `pipelines/productivity/meeting-summary.yaml` |
---
## 五、前端组件
### 5.1 PipelinesPanel
Pipeline 列表和运行界面。
```tsx
import { PipelinesPanel } from './components/PipelinesPanel';
// 在路由中使用
<Route path="/pipelines" element={<PipelinesPanel />} />
```
**功能**:
- 分类过滤
- 关键词搜索
- Pipeline 卡片展示
- 运行对话框(输入参数配置)
- 进度显示
### 5.2 PipelineResultPreview
Pipeline 执行结果预览组件。
```tsx
import { PipelineResultPreview } from './components/PipelineResultPreview';
<PipelineResultPreview
result={runResult}
pipelineId="classroom-generator"
onClose={() => setShowResult(false)}
/>
```
**预览模式**:
- JSON 数据预览
- Markdown 渲染
- 文件下载列表
- 自动模式检测
### 5.3 ClassroomPreviewer
课堂内容专用预览器。
```tsx
import { ClassroomPreviewer } from './components/ClassroomPreviewer';
<ClassroomPreviewer
data={classroomData}
onExport={(format) => handleExport(format)}
/>
```
**功能**:
- 幻灯片导航
- 大纲视图
- 自动播放
- 全屏模式
- 讲解文本显示
- 导出功能
---
## 六、Agent 对话集成
### 6.1 智能推荐
PipelineRecommender 分析用户消息,推荐相关 Pipeline
```tsx
import { pipelineRecommender } from './lib/pipeline-recommender';
// 分析用户消息
const recommendations = await pipelineRecommender.recommend(userMessage);
if (recommendations.length > 0) {
const topRec = recommendations[0];
// 向用户展示推荐
const message = pipelineRecommender.formatRecommendationForAgent(topRec);
}
```
### 6.2 意图识别模式
| 类别 | 关键词模式 | 推荐 Pipeline |
|------|------------|---------------|
| 教育 | 课件、教案、备课 | classroom-generator |
| 营销 | 营销、推广、宣传 | marketing-campaign |
| 法律 | 合同审查、风险条款 | contract-review |
| 研究 | 文献综述、学术研究 | literature-review |
| 生产力 | 会议纪要、待办事项 | meeting-summary |
### 6.3 推荐阈值
- **置信度 >= 0.8**: 直接推荐
- **置信度 0.6-0.8**: 询问用户
- **置信度 < 0.6**: 不推荐
---
## 七、Tauri 命令
### 7.1 命令列表
| 命令 | 说明 | 参数 |
|------|------|------|
| `pipeline_list` | 列出所有 Pipeline | `category?` |
| `pipeline_get` | 获取 Pipeline 详情 | `pipelineId` |
| `pipeline_run` | 运行 Pipeline | `request` |
| `pipeline_progress` | 获取运行进度 | `runId` |
| `pipeline_result` | 获取运行结果 | `runId` |
| `pipeline_cancel` | 取消运行 | `runId` |
| `pipeline_runs` | 列出所有运行 | - |
| `pipeline_refresh` | 刷新 Pipeline 列表 | - |
### 7.2 使用示例
```typescript
// 列出所有 Pipeline
const pipelines = await invoke('pipeline_list', { category: null });
// 运行 Pipeline
const { runId } = await invoke('pipeline_run', {
request: {
pipelineId: 'classroom-generator',
inputs: { topic: '牛顿第二定律', difficulty: '中级' }
}
});
// 获取进度
const progress = await invoke('pipeline_progress', { runId });
```
---
## 八、文件结构
```
crates/zclaw-pipeline/
├── Cargo.toml
├── src/
│ ├── lib.rs
│ ├── parser.rs # YAML 解析
│ ├── executor.rs # 执行引擎
│ ├── state.rs # 状态管理
│ ├── types.rs # 类型定义
│ └── actions/ # 内置动作
│ ├── mod.rs
│ ├── llm.rs
│ ├── parallel.rs
│ └── export.rs
pipelines/
├── education/
│ └── classroom.yaml
├── marketing/
│ └── campaign.yaml
├── legal/
│ └── contract-review.yaml
├── research/
│ └── literature-review.yaml
└── productivity/
└── meeting-summary.yaml
desktop/src/
├── lib/
│ ├── pipeline-client.ts # 前端客户端
│ └── pipeline-recommender.ts # 智能推荐
└── components/
├── PipelinesPanel.tsx # Pipeline 列表
├── PipelineResultPreview.tsx # 结果预览
└── ClassroomPreviewer.tsx # 课堂预览器
```
---
## 九、扩展指南
### 9.1 添加新 Pipeline
1. `pipelines/` 目录下创建 YAML 文件
2. 定义 `metadata`名称类别描述等
3. 定义 `inputs`输入参数
4. 定义 `steps`执行步骤
5. 定义 `outputs`输出映射
### 9.2 添加新 Action
1. `crates/zclaw-pipeline/src/actions/` 创建新模块
2. 实现 `ActionExecutor` trait
3. `ActionRegistry` 中注册
4. 更新 Parser 支持新动作类型
---
## 十、变更历史
| 日期 | 版本 | 变更内容 |
|------|------|---------|
| 2026-03-25 | v0.3.0 | Pipeline DSL 系统实现包含 5 Pipeline 模板 |

View File

@@ -1,8 +1,8 @@
# ZCLAW 功能全景文档
> **版本**: v0.2.0
> **更新日期**: 2026-03-24
> **项目状态**: 内部 Kernel 架构Streaming + MCP 协议
> **版本**: v0.3.0
> **更新日期**: 2026-03-25
> **项目状态**: 内部 Kernel 架构Streaming + MCP 协议Pipeline DSL 系统
> **架构**: Tauri 桌面应用Rust 后端 + React 前端
> 📋 **重要**: ZCLAW 现已采用内部 Kernel 架构,所有核心能力集成在 Tauri 桌面应用中,无需外部进程
@@ -30,18 +30,18 @@
| [04-team-collaboration.md](01-core-features/04-team-collaboration.md) | 团队协作 | L3 | 中 |
| [05-swarm-coordination.md](01-core-features/05-swarm-coordination.md) | 多 Agent 协作 | L4 | 高 |
### 1.3 智能层 (Intelligence Layer) - ✅ 集成 (2026-03-17 更新)
### 1.3 智能层 (Intelligence Layer) - ✅ 完全集成 (2026-03-24 更新)
| 文档 | 功能 | 成熟度 | UI 集成 |
|------|------|--------|---------|
| [00-agent-memory.md](02-intelligence-layer/00-agent-memory.md) | Agent 记忆 | L4 | ✅ RightPanel |
| [01-identity-evolution.md](02-intelligence-layer/01-identity-evolution.md) | 身份演化 | L4 | ❓ 待验证 |
| [02-context-compaction.md](02-intelligence-layer/02-context-compaction.md) | 上下文压缩 | L4 | 后端 |
| [03-reflection-engine.md](02-intelligence-layer/03-reflection-engine.md) | 自我反思 | L4 | ✅ **RightPanel 'reflection' tab** |
| [04-heartbeat-proactive.md](02-intelligence-layer/04-heartbeat-proactive.md) | 心跳巡检 | L4 | ❓ 后端 |
| [05-autonomy-manager.md](02-intelligence-layer/05-autonomy-manager.md) | 自主授权 | L4 | ✅ **RightPanel 'autonomy' tab** |
| 文档 | 功能 | 成熟度 | UI 集成 | 后端状态 |
|------|------|--------|---------|----------|
| [00-agent-memory.md](02-intelligence-layer/00-agent-memory.md) | Agent 记忆 | L4 | ✅ RightPanel | ✅ Rust + SQLite |
| [01-identity-evolution.md](02-intelligence-layer/01-identity-evolution.md) | 身份演化 | L4 | ✅ IdentityChangeProposal | ✅ Rust 实现 |
| [02-context-compaction.md](02-intelligence-layer/02-context-compaction.md) | 上下文压缩 | L4 | ⚙️ 后端自动 | ✅ Rust 实现 |
| [03-reflection-engine.md](02-intelligence-layer/03-reflection-engine.md) | 自我反思 | L4 | ✅ RightPanel 'reflection' | ✅ Rust 实现 |
| [04-heartbeat-proactive.md](02-intelligence-layer/04-heartbeat-proactive.md) | 心跳巡检 | L4 | ✅ HeartbeatConfig | ✅ Rust 实现 |
| [05-autonomy-manager.md](02-intelligence-layer/05-autonomy-manager.md) | 自主授权 | L4 | ✅ RightPanel 'autonomy' | ✅ TypeScript |
> ✅ 智能层核心组件(记忆、反思、自主授权)已全部集成到 RightPanel
> **智能层完全实现**: 所有 6 个核心组件均已实现,包括 Rust 后端 (Memory, Heartbeat, Reflection, Identity, Compaction) 和 TypeScript 实现 (Autonomy)
### 1.4 上下文数据库 (Context Database)
@@ -52,15 +52,15 @@
| [02-session-persistence.md](03-context-database/02-session-persistence.md) | 会话持久化 | L4 | 高 |
| [03-memory-extraction.md](03-context-database/03-memory-extraction.md) | 记忆提取 | L4 | 高 |
### 1.5 Skills 生态 - ✅ 动态扫描已实现
### 1.5 Skills 生态 - ✅ 动态扫描 + execute_skill 已实现
| 文档 | 功能 | 成熟度 | UI 集成 |
|------|------|--------|---------|
| [00-skill-system.md](04-skills-ecosystem/00-skill-system.md) | Skill 系统概述 | L4 | ✅ 通过 Tauri 命令 |
| [01-builtin-skills.md](04-skills-ecosystem/01-builtin-skills.md) | 内置技能 (73个 SKILL.md) | L4 | N/A |
| [02-skill-discovery.md](04-skills-ecosystem/02-skill-discovery.md) | 技能发现 (动态扫描 73 个) | **L4** | ✅ **已集成** |
| [01-builtin-skills.md](04-skills-ecosystem/01-builtin-skills.md) | 内置技能 (**69个** SKILL.md) | L4 | N/A |
| [02-skill-discovery.md](04-skills-ecosystem/02-skill-discovery.md) | 技能发现 (动态扫描) | **L4** | ✅ **已集成** |
> ✅ **更新**: Skills 动态扫描已实现。Kernel 集成 `SkillRegistry`,通过 Tauri 命令 `skill_list` 和 `skill_refresh` 动态发现所有 73 个技能。
> ✅ **更新**: Skills 动态扫描已实现。Kernel 集成 `SkillRegistry`,通过 Tauri 命令 `skill_list` 和 `skill_refresh` 动态发现所有 **69 个**技能。**新增 `execute_skill` 工具**,允许 Agent 在对话中直接调用技能。
### 1.6 Hands 系统 - ✅ 9/11 已实现 (2026-03-24 更新)
@@ -68,7 +68,18 @@
|------|------|--------|-----------|
| [00-hands-overview.md](05-hands-system/00-hands-overview.md) | Hands 概述 (11个) | L3 | **9/11 (82%)** |
> ✅ **更新**: 9 个 Hands 已有完整 Rust 后端实现: Browser, Slideshow, Speech, Quiz, Whiteboard, Researcher, Collector, Clip (需 FFmpeg), Twitter (需 API Key)。所有 9 个已实现 Hands 均已在 Kernel 中注册,通过 Tauri 命令 `hand_list` 和 `hand_execute` 可用。
> ✅ **更新**: 9 个 Hands 已有完整 Rust 后端实现:
> - ✅ **Browser** - Fantoccini WebDriver支持 Chrome/Firefox
> - ✅ **Slideshow** - 演示控制,支持 spotlight/laser/highlight
> - ✅ **Speech** - 语音合成,支持 SSML
> - ✅ **Quiz** - 问答生成,支持自适应学习
> - ✅ **Whiteboard** - 白板绘图,支持图表/LaTeX
> - ✅ **Researcher** - 深度研究,支持多源搜索
> - ✅ **Collector** - 数据采集,支持分页/选择器
> - ✅ **Clip** - 视频处理,需 FFmpeg
> - ✅ **Twitter** - Twitter 自动化,需 API Key
>
> ❌ **Predictor** 和 **Lead** 仍在规划中。
### 1.7 Tauri 后端
@@ -78,6 +89,21 @@
| [01-secure-storage.md](06-tauri-backend/01-secure-storage.md) | 安全存储 | L4 | 高 |
| [02-local-gateway.md](06-tauri-backend/02-local-gateway.md) | 本地 Gateway | L4 | 高 |
### 1.8 Pipeline DSL 系统 - ✅ 新增 (v0.3.0)
| 文档 | 功能 | 成熟度 | UI 集成 |
|------|------|--------|---------|
| [00-pipeline-overview.md](07-pipeline-dsl/00-pipeline-overview.md) | Pipeline 概述 | **L4** | ✅ PipelinesPanel |
> ✅ **新增**: Pipeline DSL 自动化工作流系统
> - **教育类**: 互动课堂生成器
> - **营销类**: 营销方案生成器
> - **法律类**: 合同智能审查
> - **研究类**: 文献综述生成器
> - **生产力类**: 智能会议纪要
>
> **特性**: YAML 声明式配置、状态管理、LLM 集成、Agent 智能推荐、结果预览组件
---
## 二、后续工作计划
@@ -182,16 +208,22 @@
| 指标 | 数值 |
|------|------|
| 功能模块总数 | 25+ |
| SKILL.md 文件 | 73 |
| 动态发现技能 | 73 (100%) |
| SKILL.md 文件 | **69** |
| 动态发现技能 | 69 (100%) |
| Hands 总数 | 11 |
| **已实现 Hands** | **9 (82%)** |
| **Kernel 注册 Hands** | **9/9 (100%)** |
| Zustand Store | 15 |
| **Pipeline 模板** | **5** (教育/营销/法律/研究/生产力) |
| **Pipeline 分类** | **5** 类 |
| Zustand Store | 15+ |
| Tauri 命令 | 100+ |
| 代码行数 (前端) | ~20,000 |
| 代码行数 (后端 Rust) | ~8,000 |
| LLM Provider 支持 | 7+ (Kimi, Qwen, DeepSeek, Zhipu, OpenAI, Anthropic, Local) |
| 代码行数 (前端) | ~25,000 |
| 代码行数 (后端 Rust) | ~12,000 |
| LLM Provider 支持 | **8** (Kimi, Qwen, DeepSeek, Zhipu, OpenAI, Anthropic, Gemini, Local/Ollama) |
| 智能层组件 | 5 (Memory, Heartbeat, Reflection, Identity, Compaction) |
| MCP 协议 | ✅ 已实现 |
| execute_skill 工具 | ✅ 已实现 |
| **Pipeline DSL** | ✅ **新增** |
---
@@ -199,6 +231,8 @@
| 日期 | 版本 | 变更内容 |
|------|------|---------|
| 2026-03-25 | v0.3.0 | **Pipeline DSL 系统实现**5 类 Pipeline 模板Agent 智能推荐,结果预览组件 |
| 2026-03-24 | v0.2.5 | **execute_skill 工具实现**,智能层完全实现验证,技能数更新为 69 |
| 2026-03-24 | v0.2.4 | Hands Review: 修复 BrowserHand Kernel 注册问题,所有 9 个已实现 Hands 均可访问 |
| 2026-03-24 | v0.2.3 | Hands 后端集成: 9/11 Hands 可用 (新增 Clip, Twitter) |
| 2026-03-24 | v0.2.2 | Hands 后端集成: 7/11 Hands 可用 (新增 Researcher, Collector) |