ComfyUI custom node for cloud-based workflow execution via BizyAir API
Project description
☁️ BizyAir-CloudBerry
ComfyUI 自定义节点插件,通过 BizyAir/SCX API 实现工作流的云端执行。
安装
pip install bizyair-cloudberry
配置
必填:
export BIZYAIR_API_KEY=sk-xxxxxx
可选(已有默认值):
| 变量名 | 说明 |
|---|---|
BIZYAIR_API_URL |
BizyAir API 地址 |
BIZYAIR_SCX_API_URL |
SCX API 地址 |
开发
前端开发 (Vue 3 独立包)
前端是一个独立的 Vue 3 + TypeScript 应用,提供模型选择对话框功能。
cd frontend
npm ci
npm run dev # 开发服务器 (端口 5175)
npm run build # 构建,输出到 ../src/bizyair_cloudberry/web/
构建产物为 UMD 格式的 bizyair_cloudberry_ui.js,通过 window.bizyairCBLib.showModelSelect() 调用。
技术栈:Vue 3 + TypeScript + Tailwind CSS + naive-ui + vue-i18n
后端开发
# Python 依赖安装
pip install -e ".[dev]"
# 代码格式化
ruff format .
# 运行测试(集成测试需要设置 BIZYAIR_API_KEY)
PYTHONPATH=src python -m pytest tests/ -v
UI 测试 (Playwright)
cd tests/ui
npm ci
npx playwright install --with-deps
npx playwright test
需要先启动 ComfyUI 实例(localhost:8188)。
构建打包
前端必须先构建,产物 bizyair_cloudberry_ui.js 会被打包进 wheel:
# 1. 构建前端
cd frontend && npm ci && npm run build
# 2. 构建 Python 包(开发)
pip install -e .
# 2. 构建 Python 包
pip install build && python -m build
架构
ComfyUI Server → hijack.py → CloudBerrySubgraphNode → InputHandler → SCXAPIExecutor
↓
← progress_handler.py ← TaskMonitor ← Task WebSocket
↑
gateway_manager.py ← Draft WebSocket
关键组件
后端 (src/bizyair_cloudberry/)
cloudberry_node.py- ComfyUI 节点入口hijack.py- 拦截 prompt 并注入 CloudBerry wrapperinput_handler.py- 文件/模型映射与解析,图片上传 OSSprocess_transform.py- 转换工作流 prompt 为云端执行格式file_utils.py- OSS 文件上传下载(三阶段:获取凭证→上传→提交)event_processor.py- 远程事件转换为本地格式env.py- pydantic-settings 环境变量管理scx_executor/- SCX API 执行器,含双 WebSocket 管理(Draft WS + Task WS)client/scx_client.py- SCX API 客户端(HTTP + WebSocket)routes/community.py- 社区相关 API 端点(模型浏览等)
ComfyUI 前端扩展 (src/bizyair_cloudberry/web/)
cloudberry.js- 主入口,注册扩展model_apply.js- 模型 widget 点击行为配置modules/state.js- CloudBerry 模式状态(localStorage)modules/logic.js- 拦截 graphToPrompt 注入 cloudberry_modemodules/model.js- 模型选择逻辑、徽章系统modules/configLoader.js- 远程节点配置加载
Vue 前端 (frontend/)
- Vue 3 + TypeScript 独立包,构建为 UMD 格式
showModelSelect()导出到window.bizyairCBLib,由原生 JS 扩展调用- 通过
/bizyair/*API 与后端通信 - 支持中英文 i18n
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bizyair_cloudberry-0.2.2.tar.gz.
File metadata
- Download URL: bizyair_cloudberry-0.2.2.tar.gz
- Upload date:
- Size: 41.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc7f113bd992120136afa7192a0836eead8a7188d0f1b191c4c48cc7ece1609c
|
|
| MD5 |
5f031f663675dfbca5a5fc435cdacdb2
|
|
| BLAKE2b-256 |
fb95a25de06f9a72e9355f6e26a962f9f6b161ad9817a9c6e98e6b6289f3bc76
|
File details
Details for the file bizyair_cloudberry-0.2.2-py3-none-any.whl.
File metadata
- Download URL: bizyair_cloudberry-0.2.2-py3-none-any.whl
- Upload date:
- Size: 45.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7784a1420ed9f2813b2017346d448d5f7163e342d14712caf4c8792caeb76bd3
|
|
| MD5 |
8abb52748a6201a7aad17394cb2be1f2
|
|
| BLAKE2b-256 |
49495a69decc19e0931732bf6f84575dfc780286be7767e9b8e67b94e77f04da
|