- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
动机
起初是厌烦了在多个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² 提供一个更好的平衡:
轻量快速,1秒启动
简洁直观的表单交互
多模块统一管理
复用模块,简单工作流
核心概念
- 模块 (Module): 最小可执行单元,对应一个任务,包含一条或多条命令
- 项目 (Project): 模块的集合,一次选定一个模块执行
- 分支 (Branch): 模块的另一种集合,一次串行执行多个模块
- 流 (Flow): 分支的集合,一次选定一条分支执行
- 蓝图 (Bud): leaf²可解析的yaml文件,组织上述项目/流,渲染对应UI
- 调度器 (Scheduler): 管理任务队列,执行命令
流程:编写蓝图 —> leaf²据此渲染ui —> 用户调节参数 —> leaf²组装并执行命令
设计理念
leaf²选择只依赖命令行参数进行项目整合,而尽量不修改代码,这种解耦设计使它能十分容易且迅速地集成各种不同的项目/程序。
目前推入的命令在leaf²中组织为队列,并按顺序每次一条取出执行。这是因为机器/深度学习项目中对GPU的使用通常独占,串行执行的设计也更容易管理,后续可能会增加异步队列允许程序脱离leaf²执行。
局限性
- 实现动态UI的“数据绑定“略复杂
- 暂不支持拖动上传
- 流(flow)不支持comfyui那种多分支
- 不支持图片、音频、视频的编辑、显示/试听
最小例子
下面是一段最小的合法 leaf bud
name: 最小示例
modules:
- key: intro
template: 'echo "你好: #{name}"'
arguments:
- key: name
name: 姓名
value: Leaf²
leaf²会将其渲染为如下页面,有一个文本输入框,默认值为 “Leaf²”。点击右下角预览按钮会渲染出当前命令,点击执行按钮命令 echo "你好: Leaf²" 将被送到终端执行
更多功能预览 (点击了解更多详细信息)
写在最后
项目前前后后做了6个月,一直在想用ai快速开发跟嫌弃ai代码质量之间拉扯。虽然在26年的今天,一个不含ai的产品似乎有些与时代脱节。但leaf²希望提供的是一个简单的UI,在脑机接口普及之前,允许动用小手点一点来得到实在的结果。
目前项目开发还未完全结束,但不想再闭门造车,想听听佬友们的建议和看法
1 个帖子 - 1 位参与者