pipeline-service 通用产线执行引擎
定位
通用产线执行引擎模块。把 Hermes Agent 验证过的业务流程固化为可重复、可并发的产线业务环境。
核心价值
- Hermes Agent 中用 cron/delegate/terminal 跑通的流程 → 固化为产线步骤定义 → pipeline-service 自动调度执行
- 一次验证,无限次自动执行
- 多租户并发:同一产线,不同租户同时使用,数据完全隔离
架构
宿主应用 (pipeline-app / 其他)
│
├── load_pipeline_service() ← 注册函数到 ServerEnv
│
├── pipeline_submit(tenant_id, pipeline_id, owner_id, title, params)
├── pipeline_list(tenant_id, pipeline_id?)
├── pipeline_detail(tenant_id, task_id)
├── pipeline_node(tenant_id, task_id, step_name, version?)
├── pipeline_modify(tenant_id, task_id, updates, rerun_from)
├── pipeline_pause(tenant_id, task_id)
├── pipeline_resume(tenant_id, task_id)
├── pipeline_cancel(tenant_id, task_id)
└── pipeline_register_handler(step_type, fn) ← 注册步骤处理器
引擎工作原理
- 提交任务 → 读取 pipeline_steps 表的步骤定义 → 创建 pipeline_task_steps 记录 → 启动执行
- 执行循环 → 解析 DAG 依赖图 → 找到可执行步骤(所有前置完成)→ 调用 handler → 存 artifact → 继续下一步
- 多租户 → 所有查询按 tenant_id 隔离 → 同一产线多租户并发不冲突
- 人工干预 → 修改节点 artifact → 创建新版本 → BFS 计算受影响步骤 → 级联重跑
数据表
| 表名 | 用途 |
|---|---|
| pipeline_tasks | 任务主表(tenant_id 隔离) |
| pipeline_task_steps | 任务步骤执行记录 |
| pipeline_artifacts | 步骤产物(input/output,支持版本) |
| pipeline_steps | 产线步骤定义(由 pipeline_core 模块管理) |
| pipelines | 产线定义(由 pipeline_core 模块管理) |
步骤处理器
可插拔注册,统一接口:
async def handler(tenant_id, task_id, step_name, input_data, config) -> dict:
# 处理逻辑
return output_data
# 注册
from pipeline_service import register_handler
register_handler("llm_generate", handler)
处理器按 step_type 匹配。步骤定义中的 step_type 对应 handler 注册名。
宿主集成
任何应用只需一行代码即可使用:
from pipeline_service.init import load_pipeline_service
load_pipeline_service()
宿主负责:
- HTTP 路由(ahserver 管)
- 用户认证(RBAC 管)
- 前端交互(bricks 管)
- 产线定义和定价(pipeline_core/ops/dist 管)
pipeline-service 只做:调度 + 执行 + 存储。
目录结构
pipeline-service/
├── pipeline_service/
│ ├── __init__.py # 包导出
│ ├── init.py # load_pipeline_service() + ServerEnv 注册
│ ├── state.py # DAG 解析、步骤状态机
│ ├── handler.py # 步骤处理器注册表
│ ├── storage.py # MySQL 存储层(sqlor)
│ └── executor.py # 执行循环
├── models/
│ ├── pipeline_tasks.json
│ ├── pipeline_task_steps.json
│ └── pipeline_artifacts.json
├── init/
│ └── data.json # appcodes 初始化数据
├── scripts/
│ └── load_path.py # RBAC 权限注册
├── pyproject.toml
├── build.sh
└── README.md
构建与部署
cd ~/repos/pipeline-service
pip install .
# 建表
json2ddl mysql models/ > mysql.ddl.sql
mysql -u root -p pipeline < mysql.ddl.sql
# 加载 appcodes
# (通过宿主应用的 build.sh 自动加载 init/data.json)
Description
Languages
Python
97.6%
Shell
2.4%