leaf²: 一个轻量易用且快速灵活的声明式执行框架,帮助管理并执行终端命令 【开源推广】

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社...
leaf²: 一个轻量易用且快速灵活的声明式执行框架,帮助管理并执行终端命令 【开源推广】
leaf²: 一个轻量易用且快速灵活的声明式执行框架,帮助管理并执行终端命令 【开源推广】
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
  • 我的帖子已经打上 开源推广 标签:
  • 我的开源项目完整开源,无未开源部分:
  • 我的开源项目已链接认可 LINUX DO 社区:
  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:
  • 以上选择我承诺是永久有效的,接受社区和佬友监督:

以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出


Logo

动机

起初是厌烦了在多个SVC项目之间来回切换,每次都要手动填写命令行参数,于是想做一个开源的、统一的SVC平台,并且足够轻量。后来我发现,大多数UI本质上是替用户构建、执行命令。那为什么不干脆做一个能够管理、执行终端命令的通用框架?——这就是leaf-flow。

github.com

GitHub - Stareven233/leaf-flow: leaf-flow (leaf², Lightweight EAsy Fast and...

leaf-flow (leaf², Lightweight EAsy Fast and Flexible execution framework) ,a lightweight declarative execution framework for rapidly generating structured CLI/TUI interfaces via YAML configurations. | 一个轻量的声明式执行框架,支持通过 YAML 配置快速为 CLI/TUI 工具生成结构化的交互界面

演示: bilibili - leaf² | AI翻唱遇上"声明式": Gradio/ComfyUI之外的轻量选择
下载试用: github release
下载试用2: 百度网盘

亮点

为机器学习项目提供图形界面通常 Gradio 与 ComfyUI 是主流选择,但各有局限:

  • Gradio:开发快但启动慢,不灵活,依赖 Python
  • ComfyUI:很灵活但略显复杂,学习成本高,依赖 Python

leaf² 提供一个更好的平衡:

  • :high_voltage: 轻量快速,1秒启动
  • :artist_palette: 简洁直观的表单交互
  • :sparkles: 多模块统一管理
  • :wrench: 复用模块,简单工作流

核心概念

  • 模块 (Module): 最小可执行单元,对应一个任务,包含一条或多条命令
  • 项目 (Project): 模块的集合,一次选定一个模块执行
  • 分支 (Branch): 模块的另一种集合,一次串行执行多个模块
  • (Flow): 分支的集合,一次选定一条分支执行
  • 蓝图 (Bud): leaf²可解析的yaml文件,组织上述项目/流,渲染对应UI
  • 调度器 (Scheduler): 管理任务队列,执行命令

流程:编写蓝图 —> leaf²据此渲染ui —> 用户调节参数 —> leaf²组装并执行命令

设计理念

leaf²选择只依赖命令行参数进行项目整合,而尽量不修改代码,这种解耦设计使它能十分容易且迅速地集成各种不同的项目/程序。

目前推入的命令在leaf²中组织为队列,并按顺序每次一条取出执行。这是因为机器/深度学习项目中对GPU的使用通常独占,串行执行的设计也更容易管理,后续可能会增加异步队列允许程序脱离leaf²执行。

局限性

  1. 实现动态UI的“数据绑定“略复杂
  2. 暂不支持拖动上传
  3. 流(flow)不支持comfyui那种多分支
  4. 不支持图片、音频、视频的编辑、显示/试听

最小例子

下面是一段最小的合法 leaf bud

name: 最小示例
modules:
  - key: intro
    template: 'echo "你好: #{name}"'
    arguments:
      - key: name
        name: 姓名
        value: Leaf²

leaf²会将其渲染为如下页面,有一个文本输入框,默认值为 “Leaf²”。点击右下角预览按钮会渲染出当前命令,点击执行按钮命令 echo "你好: Leaf²" 将被送到终端执行

minimum-example

更多功能预览 (点击了解更多详细信息)

写在最后

项目前前后后做了6个月,一直在想用ai快速开发跟嫌弃ai代码质量之间拉扯。虽然在26年的今天,一个不含ai的产品似乎有些与时代脱节。但leaf²希望提供的是一个简单的UI,在脑机接口普及之前,允许动用小手点一点来得到实在的结果。

目前项目开发还未完全结束,但不想再闭门造车,想听听佬友们的建议和看法

1 个帖子 - 1 位参与者

阅读完整话题

来源: linux.do查看原文