Aller au contenu

ComfyUI-UML : Le rendu de diagrammes dans un graphe de nœuds

ComfyUI-UML ajoute des nœuds de diagrammes à ComfyUI. Le texte entre dans un workflow, un moteur le convertit en image et le workflow peut conserver la source ainsi que les liens du visualiseur.

Intégration
  • Mis à jour
  • 3
  • Python · 50.91%
Langages du dépôtPython 50.91%3

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
Python50.91%130 995
JavaScript45.75%117 710
HTML3.34%8 584

GitHub · README · Statistiques de langages

Aperçu

Pourquoi il existe

Nœuds personnalisés pour ComfyUI intégrant la synthèse de diagrammes dans les pipelines d'IA générative.

Cas d’usage

Pipelines IA visuels associant schémas d'architecture et post-traitement graphique.

Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

README.md · Installation
comfy node install comfyui-uml
Commandes déclarées dans les manifestes

Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

Installation

README.md

From Comfy Registry (recommended): Manual:

  1. Clone or copy this folder into ComfyUI/custom_nodes/.
  2. Install dependencies: pip install -r requirements.txt or uv sync.
  3. Optional — Local Mermaid (backend = local): install Node.js (LTS), then from this folder run cd web/js && npm ci (or npm install) so beautiful-mermaid is available for web/js/render_mermaid.mjs. PNG preview for SVG in the node: pip install cairosvg. Dynamic widget visibility: pip install comfy-dynamic-widgets (or extras from pyproject.toml).
Lire les instructions complètes ↗

Getting started

CONTRIBUTORS.md

  1. Clone the repository and open it in your editor.
  2. Install dev dependencies (pick one):
  • uv sync –extra dev (recommended if you use uv)
  • pip install -e “.[dev]”
  1. Run tests: uv run pytest or pytest (from the repo root).
  2. Lint/format: uv run ruff check . and uv run ruff format ., or install pre-commit and run pre-commit install. See docs/Testing.md for CI (pytest, comfy-test) and mock LLM behavior.
Lire les instructions complètes ↗
Configuration et utilisation

Usage

README.md

Add the UML Render (Mermaid/PlantUML/etc) node (category: UML). Choose backend (web/local), diagram_type, enter code, and set output_format (png, svg, jpeg, pdf, txt, base64 — validated per type). Optional diagram_options JSON for Kroki. Full usage, outputs, viewer, and LLM workflow: docs/Usage.md. Diagram type × format table: docs/KrokiFormats.md.
Lire les instructions complètes ↗
Exploitation et dépannage

Updating

README.md

After updating (Manager, git pull, or manual), restart ComfyUI so nodes and web assets load. Other nodes failing to update are independent; retry that node and restart.
Lire les instructions complètes ↗

Dependency updates

CONTRIBUTORS.md

  • Dependabot opens PRs for Python (pyproject.toml / lockfile where applicable), npm under web/js, and GitHub Actions.
  • Renovate is enabled with a dependency dashboard and focuses on updates that do not overlap Dependabot (for example, grouped Action bumps). If two bots open the same update, close one and keep the preferred PR.
Lire les instructions complètes ↗
Développement et contributions

Testing

README.md

CI runs pytest, Ruff, and npm ci in web/js (.github/workflows/pytest.yml), plus comfy-test on push/PR to main / master. Locally: uv sync –extra dev, then uv run pytest, uv run ruff check ., and optionally cd web/js && npm ci. See docs/Testing.md for details, comfy-test.toml, and AGENTS.md for agent/contributor workflow (including headless pytest notes).
Lire les instructions complètes ↗

Development

README.md

To run linting and formatting on commit (JSON and Python):

  1. Install dev dependencies: pip install -e “.[dev]” or uv sync –extra dev.
  2. Install pre-commit hooks: pre-commit install. Pre-commit will format JSON (key order preserved) and run Ruff (lint + format) on Python. To run on all files: pre-commit run –all-files.
Lire les instructions complètes ↗

Contributing

README.md

See CONTRIBUTORS.md for dev setup, tests, and dependency automation (Dependabot / Renovate). For AI assistants and deeper change workflow (ordered checklist, Context7 for libraries), see AGENTS.md.
Lire les instructions complètes ↗

Contributing to ComfyUI-UML

CONTRIBUTORS.md

Thanks for helping improve ComfyUI-UML.
Lire les instructions complètes ↗
Documentation source

3 documents lus parmi 3 candidats.

Fonctions et composants 2

Enregistrement du module
Le fichier __init__.py charge le paquet nodes sous le nom unique comfyui_uml_nodes pour éviter un conflit avec le module nodes de ComfyUI. Il expose les correspondances de classes et le dossier web de l’extension.
Rendu et visualiseur
Le dossier nodes sépare la génération de diagrammes, les échanges Kroki et les liens du visualiseur. WEB_DIRECTORY expose les ressources du navigateur et l’enregistrement des routes permet de sauvegarder depuis le visualiseur. Le rendu local et Kroki constituent des moteurs distincts.

Architecture

Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.

Contexte système Contexte
  1. Texte du diagramme
  2. Nœud ComfyUI enregistré
  3. Moteur local
  4. Service Kroki
  5. Image et liens du visualiseur

Liens vérifiés dans le dépôt.

Mermaid Diagramme interactif (chargement à l’ouverture)

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de ComfyUI-UML
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR

subgraph group_workflow["ComfyUI Workflow"]
  node_workflow_nodes["ComfyUI Nodes<br/>[__init__.py]"]
  node_render_node["UML Render<br/>[uml_diagram.py]"]
  node_viewer_url_node["Diagram Viewer URL<br/>[uml_viewer_url.py]"]
  node_diagram_result["Diagram Result"]
end

subgraph group_rendering["Diagram Rendering"]
  node_diagram_defaults["Diagram Defaults<br/>[default_code.py]"]
  node_render_client["Render Backends<br/>[kroki_client.py]"]
  node_local_mermaid["Local Mermaid<br/>[render_mermaid.mjs]"]
end

subgraph group_generation["LLM Generation"]
  node_prompt_engine["Prompt Engine"]
  node_llm_call["LLM Call<br/>[uml_llm_call.py]"]
  node_code_assistant["LLM Code Assistant<br/>[uml_llm.py]"]
  node_llm_shared["LLM Providers<br/>[uml_llm_shared.py]"]
  node_prompt_templates["Prompt Templates"]
end

subgraph group_viewer["Viewer Experience"]
  node_frontend_extension["ComfyUI Extension<br/>[ComfyUI-UML.js]"]
  node_viewer_shell["Viewer Shell<br/>[viewer_shell.mjs]"]
  node_url_utils["Viewer URL Utilities<br/>[viewerUrlUtils.mjs]"]
  node_view_registry["View Registry<br/>[view_manifest.js]"]
  node_format_views["Format Views"]
end

node_user(("ComfyUI User"))
node_kroki["Kroki API"]

node_user -->|"configures"| node_workflow_nodes
node_workflow_nodes -->|"runs"| node_render_node
node_prompt_engine -->|"supplies prompt"| node_llm_call
node_llm_call -->|"calls provider"| node_llm_shared
node_code_assistant -->|"calls provider"| node_llm_shared
node_prompt_engine -->|"loads templates"| node_llm_shared
node_prompt_engine -.->|"loads presets"| node_prompt_templates
node_code_assistant -.->|"loads presets"| node_prompt_templates
node_code_assistant -->|"provides diagram code"| node_render_node
node_render_node -->|"uses defaults"| node_diagram_defaults
node_render_node -->|"requests rendering"| node_render_client
node_render_client -->|"posts diagram"| node_kroki
node_render_client -->|"runs local renderer"| node_local_mermaid
node_render_node -.->|"returns output"| node_diagram_result
node_render_node -->|"provides Kroki URL"| node_viewer_url_node
node_viewer_url_node -->|"opens preview"| node_frontend_extension
node_render_node -->|"opens viewer"| node_frontend_extension
node_frontend_extension -->|"builds viewer query"| node_url_utils
node_frontend_extension -.->|"opens viewer"| node_viewer_shell
node_viewer_shell -->|"infers format"| node_url_utils
node_viewer_shell -->|"selects view"| node_view_registry
node_view_registry -->|"loads format view"| node_format_views
node_viewer_shell -.->|"fetches diagram"| node_diagram_result


class node_workflow_nodes,node_render_node,node_viewer_url_node,node_diagram_result,node_user toneBlue
class node_diagram_defaults,node_render_client,node_local_mermaid toneAmber
class node_prompt_engine,node_llm_call,node_code_assistant,node_llm_shared,node_prompt_templates,node_kroki toneMint
class node_frontend_extension,node_viewer_shell,node_url_utils,node_view_registry,node_format_views toneRose

Des nœuds ComfyUI qui créent une source de diagramme, effectuent le rendu avec Kroki ou des moteurs locaux, puis exposent les images, fichiers et liens de visualisation. Des nœuds de modèle de langage peuvent générer la source en amont.

Composants
19
Connexions
23
Liens appuyés par le code ou le README
18/23
Version texte du diagramme
  • Texte du diagramme → Nœud ComfyUI enregistré
  • Nœud ComfyUI enregistré → Moteur local
  • Nœud ComfyUI enregistré → Service Kroki
  • Moteur local → Image et liens du visualiseur
  • Service Kroki → Image et liens du visualiseur
Suivre un parcours dans le code

Partez de NODE_CLASS_MAPPINGS, puis suivez un nœud vers son moteur de rendu. Le chargeur utilise une spécification de module explicite, car ComfyUI peut importer l’extension directement depuis un chemin de fichier.

Types et structure des fichiers

11 types déclarés, dont 11 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class tb654476aede8["KrokiError"] {
}
class t50d2adfa6e30["UMLDiagram"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class tf5d8a3add21d["UMLLLMCodeGenerator"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class t54e8aa4c2ef3["LLMCall"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class tad1d573d8063["LLMPromptEngine"] {
  INPUT_TYPES()
  VALIDATE_INPUTS()
  run()
}
class tf971647cbde8["UMLViewerURL"] {
  INPUT_TYPES()
  run()
}
class t12ed9326b7d8["Args"] {
}
class t00114166eb81["Args"] {
}
class tc2da0bee5d97["Obj"] {
}
class t0087e40115b2["Obj"] {
}
class ta16414e60e88["Obj"] {
  __str__()
}
class b60d1d89f176e["Exception"] {
  <<unresolved_base>>
}
b60d1d89f176e <|-- tb654476aede8

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

Index des types

Référence

39 / 39 fichiers admissibles lus (330 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

Carte des fichiers
flowchart TD
  root["ComfyUI-UML"]
  f0["__init__.py"]
  root --> f0
  f1["nodes/kroki_client.py"]
  root --> f1
  f2["nodes/uml_diagram.py"]
  root --> f2
  f3["README.md"]
  root --> f3
  f4["conftest.py"]
  root --> f4
  f5["install.py"]
  root --> f5
  f6["prestartup_script.py"]
  root --> f6
  f7["pyproject.toml"]
  root --> f7
  f8["requirements.txt"]
  root --> f8
  f9["nodes/__init__.py"]
  root --> f9
  f10["nodes/default_code.py"]
  root --> f10
  f11["nodes/uml_llm.py"]
  root --> f11
  f12["nodes/uml_llm_call.py"]
  root --> f12
  f13["nodes/uml_llm_prompt_engine.py"]
  root --> f13
  f14["nodes/uml_llm_shared.py"]
  root --> f14
  f15["nodes/uml_routes.py"]
  root --> f15

Fichiers à lire 3

Références