Skip to main content

轻量 Python DAG workflow 框架,代码声明节点,人机协作控制循环

Project description

esflow

定位

  • Agent Skill时代下,轻量、好用的 workflow 框架
  • 高效人机协作控制循环,支持:单步调试、流程编排、暂停确认、定点续跑
  • 清晰化团队 Skill 规范,提高资产复用率,让单节点在多 Skill 中流转
  • esflow CLI 主要服务可视化和快速上手

功能一览

特性 说明
DAG 拓扑执行 目录约定声明,Kahn 无环校验,就绪节点按拓扑推进
并行副本 一个 node 声明 N 个并行副本(扇出/扇入),asyncio.gather 并行
同层依次启动 serial 集合同层按 nodes 顺序启动,用于 fallback 兜底链
接手 / 脱手确认 accept False → skip;deliver 失败 → error(契约式设计)
skip 兜底链 上游有产物则 skip 当前,无产物则当前接手兜底
人机协作 checkpoint=AFTER 暂停 job,等 c / r / a 控制
retry 复用上游 已完成且无依赖变更的上游 artifact 复用,不重跑
定点续跑 run --out DIR --from NODE 复用上游产物,只重跑指定节点及下游
按层续跑 run --out DIR --from-depth N 重跑 depth>=N 的所有节点,上游 depth<N 复用
单节点调试 --node worker#2 只跑指定节点及其必需上游
统一事件流 JobEvent 折叠成 JobState 供视图消费
库 + CLI 双入口 async for event in runner.run() 为主,CLI 调试
启动预检 pass_checkrunner.run() 前聚合检查,失败带 fix 修复指引

安装

pip install esflow

快速开始

从仓库源码试用:

esflow run examples/quickstart_flow

生成一个自己的 flow:

esflow new my_skill
python my_skill/scripts/run.py

快速上手见 docs/quickstart.md

常用命令

esflow run ./my_flow
esflow run ./my_flow --out ./runs/a
esflow run ./my_flow --out ./runs/a --from translate
esflow run ./my_flow --out ./runs/a --from-depth 2
esflow debug ./my_flow
esflow view ./my_flow

checkpoint 时 stdin 命令:c continue / r retry / a abort。

人工修正某个节点产物后,从它的下一步继续跑:先用 --out 固定产物目录,再用 --from 指定重跑起点。详见 docs/artifacts.md

最小用法

目录约定:

my_flow/
  flow.py        # @flow 装饰的类,声明 nodes + edges + replicas
  nodes/
    fetch.py     # 定义 Node 子类,一文件一节点

最小节点(Node 基类,run 必须实现):

# nodes/fetch.py
from esflow import Node

class Fetch(Node):
    id = "fetch"
    title = "抓取数据"

    def run(self, ctx) -> dict:
        return {"items": [1, 2, 3]}

更详细的节点开发(accept/deliver)、edge 用法、skill 模板生成见 docs/quickstart.md

示例一览

示例 链路 演示特性
examples/quickstart_flow/ fetch → process → review → export 首屏推荐:4 节点线性 DAG + checkpoint
examples/skip_flow/ trigger → fetch_from_{ssr,wechat,bili} → merge → parse_to_{html,md} → done 两组 serial fallback 链:多源兜底抓取 + 解析格式降级
examples/fanout_flow/ fetch → worker#5 → merge 静态 replicas 扇出/扇入
examples/fanout_dynamic/ ingest → split → worker(动态) → merge FanOut 运行时展开副本
examples/student_exam_flow/ register → publish_paper → student#3 → review → teacher_leave checkpoint + replicas 综合
examples/ocr_flow/ ingest → preprocess → ocr → export pass_check 启动预检 + output_dir 落盘

文档

教程(怎么用):

参考手册(按类组织):

其他:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esflow-0.1.0.tar.gz (46.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

esflow-0.1.0-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file esflow-0.1.0.tar.gz.

File metadata

  • Download URL: esflow-0.1.0.tar.gz
  • Upload date:
  • Size: 46.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for esflow-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4560fd94a6861ada59ee4b360189d133c39505aea8b514244b7e30c8690387d7
MD5 0f0b4c20cff92d5037f78aaa7b58c69d
BLAKE2b-256 653c8c875636ccb05c1aae8e5045ec37cdd669069cebfe9c9bd608cba94ee77f

See more details on using hashes here.

File details

Details for the file esflow-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: esflow-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for esflow-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0072b4381544da3abd9b6af0244e7a10169ecc0de08323f2fed458c332920abd
MD5 1db142938c77133f272f3fd67be3099a
BLAKE2b-256 7deb8f8943079180dbc5ad9d2f64f67f12e40800ec2ab897345b20e97f5f4f4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page