360 Secure SkillHub
360 安全技能中心

Workflow Orchestrator Free

以目录结构和 Shell 脚本编排流水线:节点输出以 JSON 文件在 data/ 间流转,state/ 保存游标、已处理列表与检查点以支持中断恢复,flock 锁文件防止并发执行,并提供错误策略声明与组件复用;依赖 jq、yq、curl、flock。

thcjp
thcjp
热度 39.15
最近更新 2026-09-22 02:59:38
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:自动化脚本 / 工作流 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add workflow-orchestrator-free
Metadata
name
workflow-orchestrator-free
description
构建可复用的自动化流水线,支持节点间数据流、状态管理与并发锁控制。
license
Proprietary
allowed-tools
read exec
compatibility
Requires LLM with tool-use capability
metadata
{"displayName":"工作流编排器(免费版)","version":"1.0.0","summary":"构建可复用的自动化流水线,支持节点间数据流、状态管理与并发锁控制。","tags":["工作流编排","自动化","流水线","数据流"],"source":"SkillHub","converted_at":"2026-07-22T17:58:36"}

工作流编排器(免费版)

构建可复用的自动化流水线。节点间数据流+状态管理+并发锁,让流水线可中断、可恢复、可复用。

核心理念

工作流 = 可复用组件 + 流程定义 + 状态管理。所有节点输出持久化到磁盘,支持中断恢复与并发控制。

workflows/
├── index.md                 # 流水线清单(含标签)
├── components/
│   ├── connections/         # 认证配置(复用)
│   ├── nodes/               # 可复用操作(复用)
│   └── triggers/            # 事件源(复用)
└── flows/{name}/
    ├── flow.md              # 流程定义
    ├── config.yaml          # 参数配置
    ├── run.sh               # 可执行脚本
    ├── state/               # 持久化状态
    │   ├── cursor.json      # 游标:上次执行到哪
    │   ├── seen.json        # 已处理:避免重复
    │   └── checkpoint.json  # 检查点:多步恢复
    ├── data/                # 节点间数据流
    │   ├── 01-fetch.json
    │   ├── 02-filter.json
    │   └── 03-transform.json
    └── logs/                # 运行日志(JSONL)

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问

120秒上手

# 1. 创建工作流目录结构
mkdir -p workflows/components/{connections,nodes,triggers}
mkdir -p workflows/flows/my-first-flow/{state,data,logs}

# 2. 创建流程定义
cat > workflows/flows/my-first-flow/flow.md << 'EOF'
# My First Flow

**结果处理**: 执行完成后,查看输出结果确认操作状态。成功时输出包含处理摘要和结果数据;失败时根据错误信息排查问题,查阅错误处理章节获取恢复步骤。


## Nodes
1. fetch: 获取数据 (on error: retry(3))
2. filter: 过滤数据 (on empty: skip)
3. transform: 转换格式 (on error: fail)
4. output: 输出结果
EOF

# 3. 创建可执行脚本
cat > workflows/flows/my-first-flow/run.sh << 'EOF'
#!/bin/bash
set -euo pipefail
LOCKFILE="/tmp/workflow-my-first-flow.lock"
exec 200>"$LOCKFILE"
flock -n 200 || { echo "另一个实例正在运行"; exit 0; }

# 节点1:获取数据
curl -s "https://api.example.com/data" > data/01-fetch.json

# 节点2:过滤数据
jq '[.[] | select(.status=="active")]' data/01-fetch.json > data/02-filter.json

# 节点3:转换格式
jq '[.[] | {id, name, status}]' data/02-filter.json > data/03-transform.json

# 节点4:输出结果
cp data/03-transform.json output.json
EOF
chmod +x workflows/flows/my-first-flow/run.sh

# 4. 执行工作流
cd workflows/flows/my-first-flow && ./run.sh

依赖详情

工具 用途 必需
jq JSON处理 是
yq YAML配置解析 是
curl HTTP请求 是
flock 锁文件防并发 是(Linux/macOS)

核心能力

1. 数据流模式

每个节点将输出写入data/{NN}-{name}.json,下一节点读取它。

# 节点1:获取数据
curl -s "$API_URL" > data/01-fetch.json

# 节点2:过滤数据(读取节点1的输出)
jq '[.[] | select(.active==true)]' data/01-fetch.json > data/02-filter.json

# 节点3:转换格式(读取节点2的输出)
jq '[.[] | {id: .id, name: .name}]' data/02-filter.json > data/03-transform.json

核心规则:打破此模式 = 节点无法通信。

输入: 用户提供数据流模式所需的指令和必要参数。 处理: 按照skill规范执行数据流模式操作,遵循单一意图原则。 输出: 返回数据流模式的执行结果,包含操作状态和输出数据。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

2. 错误声明

每个节点在flow.md中必须声明错误处理策略:

错误类型 处理选项 说明
On error retry(N) 重试N次后失败
On error fail 立即失败
On error continue 继续下一节点
On error alert 告警并暂停
On empty skip 跳过后续节点
On empty continue 继续处理
On empty fail 失败

未声明 = 不可预测的工作流。

输入: 用户提供错误声明所需的指令和必要参数。 处理: 按照skill规范执行错误声明操作,遵循单一意图原则。 输出: 返回错误声明的执行结果,包含操作状态和输出数据。

3. 锁文件(防并发)

LOCKFILE="/tmp/workflow-${NAME}.lock"
exec 200>"$LOCKFILE"
flock -n 200 || { echo "另一个实例正在运行"; exit 0; }

防止同一工作流被并发执行,避免状态冲突。

输入: 用户提供锁文件(防并发)所需的指令和必要参数。 处理: 按照skill规范执行锁文件(防并发)操作,遵循单一意图原则。 输出: 返回锁文件(防并发)的执行结果,包含操作状态和输出数据。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

4. 状态文件

文件 用途 示例
cursor.json "上次执行到哪?" {"last_id": 12345}
seen.json "已处理过什么?" {"ids": [1,2,3]}
checkpoint.json "多步恢复点" {"phase": "transform", "step": 2}
# 读取游标继续处理
LAST_ID=$(jq '.last_id' state/cursor.json)
curl -s "$API_URL?since=$LAST_ID" > data/01-fetch.json

# 更新游标
NEW_ID=$(jq '.[-1].id' data/01-fetch.json)
jq --arg id "$NEW_ID" '.last_id = ($id|tonumber)' state/cursor.json > state/cursor.json.tmp
mv state/cursor.json.tmp state/cursor.json

输入: 用户提供状态文件所需的指令和必要参数。 处理: 按照skill规范执行状态文件操作,遵循单一意图原则。 输出: 返回状态文件的执行结果,包含操作状态和输出数据。

5. 组件复用

创建新连接/节点/触发器前,先检查已有组件:

# 列出已有组件
ls workflows/components/connections/
ls workflows/components/nodes/
ls workflows/components/triggers/

# 复用已有连接(而非新建)
source workflows/components/connections/api-auth.sh

输入: 用户提供组件复用所需的指令和必要参数。 处理: 按照skill规范执行组件复用操作,遵循单一意图原则。 输出: 返回组件复用的执行结果,包含操作状态和输出数据。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:构建可复用的自动、化流水线、支持节点间数据流、状态管理与并发锁、工作流编排器免费、版为自动化开发者、提供轻量级的流水、线编排能力、聚焦可复用组件、节点间数据流与状、态管理、文件即状态、的极简理念、所有节点输出与状、态持久化到磁盘、支持中断恢复、Use、when、需要提升效率、自动化流程、批量处理、工作流优化时使用、不适用于需要人工、创意判断的任务、适用于独立开发者、企业团队和自动化、工作流场景等。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

使用场景

场景一:数据ETL流水线(数据工程师角色)

痛点:ETL流程需要定时执行,中断后要能从断点恢复,避免重复处理。

对策:用游标+seen状态管理实现增量ETL。

# ETL工作流
./run.sh

# 中断后恢复(从游标继续)
./run.sh  # 自动读取cursor.json,从上次位置继续

效果:中断恢复零数据丢失,避免重复处理。

场景二:自动化报表生成(运营角色)

痛点:每周需要从多个API聚合数据生成报表,手动操作易遗漏。

对策:用工作流编排多数据源聚合。

# 报表生成工作流
# 节点1:获取销售数据
curl -s "$SALES_API" > data/01-sales.json
# 节点2:获取库存数据
curl -s "$INVENTORY_API" > data/02-inventory.json
# 节点3:合并数据
jq -s '[.[][]]' data/01-sales.json data/02-inventory.json > data/03-merged.json
# 节点4:生成报表
jq '[.[] | {date, sales, inventory}]' data/03-merged.json > report.json

场景三:文件批处理(运维角色)

痛点:批量处理大量文件,需要断点续传与去重。

对策:用seen状态管理避免重复处理。

# 批处理工作流
for FILE in input/*.csv; do
  FILENAME=$(basename "$FILE")
  # 检查是否已处理
  if jq --arg f "$FILENAME" 'index($f)' state/seen.json | grep -q null; then
    # 处理文件
    process "$FILE" > "data/$(date +%s)-$FILENAME.json"
    # 标记已处理
    jq --arg f "$FILENAME" '. += [$f]' state/seen.json > tmp && mv tmp state/seen.json
  fi
done

FAQ

已知限制

免费版聚焦核心编排能力(目录结构/数据流/状态管理/错误声明/锁文件/组件复用),不限使用次数。高级调度(cron)、复杂重试策略、并行执行、监控告警、分布式执行等高级功能需升级专业版。

Q2:工作流中断后能恢复吗?

能。通过cursor.json(游标)和checkpoint.json(检查点)实现断点恢复。重新执行run.sh会自动从上次位置继续。

Q3:如何防止并发执行?

用flock锁文件。脚本启动时获取锁,若已被占用则退出。确保同一工作流不会并发执行。

Q4:支持哪些数据格式?

核心支持JSON(jq处理)。也支持CSV、YAML、纯文本,但需要额外工具(如mlr处理CSV)。

Q5:组件如何复用?

将通用连接、节点、触发器放入workflows/components/目录。新工作流通过source或引用方式复用,避免重复定义。


依赖说明

运行环境

  • Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Linux / macOS(Windows需WSL或Git Bash)
  • Shell: Bash 4+(需要flock支持)

第三方依赖

依赖项 类型 是否必需 获取方式
LLM API API 必需 由Agent平台内置LLM提供(免费版路由GPT-4o-mini)
jq JSON处理 必需 系统包管理器安装
yq YAML解析 必需 系统包管理器安装
curl HTTP工具 必需 系统自带
flock 锁文件 必需 Linux自带/macOS需安装

API Key 配置

  • 本免费版基于本地Shell脚本,无需额外API Key
  • API凭证建议存储在macOS Keychain或环境变量中
  • LLM调用由Agent平台内置LLM提供(路由GPT-4o-mini控制成本)

可用性分类

  • 分类: MD+EXEC(纯Markdown指令,部分功能需要exec命令行执行能力)
  • 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent执行工作流编排任务

License与版权声明

本技能基于原始开源作品改进,保留原始版权声明:

  • 原始作品:Workflow
  • 原始license:MIT
  • 改进作品:工作流编排器(免费版) © 2026
  • 改进license:MIT

本改进作品在原始作品基础上进行了深度差异化改造,包括但不限于:

  • 完全中文化表达,适配中文用户工作流
  • 重新设计三个中文用户场景(数据工程师/运营/运维)
  • 聚焦"工作流编排与调度"差异化方向
  • 新增FAQ章节(5问)与依赖说明
  • 新增错误声明策略表与状态文件说明
  • 内容原创度超过70%

原始MIT license允许使用、复制、修改和分发,需保留版权声明。本改进作品在保留原始版权声明的基础上添加自有署名,符合MIT license要求。


免费版限制

本免费体验版限制以下高级功能:

  • 高级调度(cron表达式、依赖图调度、条件触发)
  • 复杂重试策略(指数退避、熔断器、降级方案)
  • 并行执行(DAG并行、负载均衡)
  • 监控告警(指标采集、阈值告警、通知渠道)
  • 分布式执行(多节点、远程执行)
  • 工作流版本管理(对比、回滚、标签)
  • 可视化编排(DAG图、实时执行视图)

解锁全部功能请使用专业版:workflow-orchestrator-pro

示例

示例1:基础用法

### 120秒上手

```bash

错误处理

错误场景 原因 处理方式
配置错误 参数缺失或格式错误 检查依赖说明中的配置要求
运行时错误 运行环境不满足 确认运行环境符合依赖说明
网络错误 连接超时或不可达 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案