UI→API conversion emits frontend-only custom nodes (rgthree Bookmark) → unknown_class_type; consider pairing widgets by name via widgets_values_named

Đang mở
#873 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
55/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
api, cli

Hướng nghiên cứu

Start in comfy_cli/workflow_to_api.py at convert_ui_to_api and review _UI_ONLY_NODE_TYPES, then compare the related workflow_ops.UI_ONLY_NODE_TYPES behavior. Reproduce with the Bookmark (rgthree) workflow using comfy workflow validate and inspect how widgets_values_named is handled. Done means the affected UI workflow validates without unknown_class_type errors and the chosen conversion behavior is covered consistently.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

convert_ui_to_api (comfy_cli/workflow_to_api.py) skips only the frontend's own virtual nodes — _UI_ONLY_NODE_TYPES = {Note, MarkdownNote, PrimitiveNode, GetNode, SetNode, Reroute}. Popular packs ship more of them: rgthree's Bookmark (rgthree), Label (rgthree), Fast Groups Muter (rgthree)… are isVirtualNode in the frontend, have no Python class and never reach the executor. The converter still emits them, so comfy workflow validate / comfy workflow run (and comfy-mcp's validate_workflow / run_workflow, which call the same code) fail with unknown_class_type on a workflow that runs fine from the UI.

Repro: any UI-format workflow with one Bookmark (rgthree) node (rgthree-comfy installed):

comfy workflow validate --workflow my_ui_workflow.json
→ valid: false, errors: [{"type": "unknown_class_type", "node_id": "160", "class_type": "Bookmark (rgthree)"}]

Measured on comfy-cli 1.18.0 and on main (2026-09-15) with a 149-node workflow carrying 5 bookmarks: 5 × unknown_class_type, nothing else wrong with the graph (the same graph exported to API from the UI validates clean).

Two suggestions

  1. Skip a node whose type is absent from object_info when it declares neither inputs nor outputs (decorative by construction), and/or extend _UI_ONLY_NODE_TYPES (and workflow_ops.UI_ONLY_NODE_TYPES) with rgthree's virtual types. We run exactly that as a 20-line wrapper loaded by a .pth in our venv: https://github.com/sickbraintwo/WextraUI/blob/main/tools/comfy_cli_patch.py — with it the same workflow converts to 60 clean nodes.

  2. The frontend (≥ 1.5x) now saves widgets_values_named next to widgets_values (a {input name: value} map, present on every node of files saved by recent frontends). When it is there, pairing widget values by name instead of by position would make the converter — and comfy workflow slots — immune to the positional drift that produces pairing_suspect slots whenever a custom node draws a widget its schema does not list, or changed its input order between versions. We hit this on our own pack (40 suspect slots on one workflow) and fixed it on our side, but the name map is already in the file and would make the converter robust for every pack.

Happy to open a PR for either if you tell me which shape you prefer.

Ngôn ngữ chính
Python
Star
1k
Fork
176
Merge trung bình
1 ngày 11 giờ
Pull request đã merge (30 ngày)
87

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Comfy-Org/comfy-cli

Tất cả issue của Comfy-Org/comfy-cli

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.