Table des matières
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.
- Langages
- 3Répartition du code
- Composants documentés
- 2Explorer les modules
- Documents source
- 3Lire les instructions
Langages du dépôtPython 50.91%3
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Python | 130 995 | |
| JavaScript | 117 710 | |
| HTML | 8 584 |
1. Aperçu
1.1. Pourquoi il existe
Nœuds personnalisés pour ComfyUI intégrant la synthèse de diagrammes dans les pipelines d'IA générative.
1.2. Cas d’usage
Pipelines IA visuels associant schémas d'architecture et post-traitement graphique.
2. Cas d’utilisation
Nœuds ComfyUI qui rendent des diagrammes Mermaid, PlantUML, Graphviz et autres types Kroki, au besoin à partir de code LLM.
- Rendre un diagramme
- Utilisateur ComfyUIAPI Kroki
Le nœud UML Render (nodes/uml_diagram.py) envoie le code à Kroki via nodes/kroki_client.py et renvoie du png, svg, jpeg, pdf, txt ou base64, selon les formats permis pour chaque type.
- Rendre Mermaid hors ligne
- Utilisateur ComfyUI
Avec le backend local, web/js/render_mermaid.mjs utilise beautiful-mermaid (après npm ci dans web/js) pour produire du SVG ou du PNG ; Graphviz se rend en local si le paquet graphviz est installé.
- Générer le code avec un LLM
- Utilisateur ComfyUIFournisseur de LLM
UML Code Assistant (nodes/uml_llm.py), ou LLM Prompt Engine suivi de LLM Call, remplit un gabarit de prompts/ et appelle Ollama, OpenAI, Anthropic ou Gemini ; le résultat alimente UML Render.
- Prévisualiser et partager
- Utilisateur ComfyUIAPI Kroki
Diagram Viewer URL (nodes/uml_viewer_url.py) transforme kroki_url en lien de visualiseur et en lien iframe (viewer.html?embed=1) et affiche un aperçu dans le nœud.
- Enregistrer dans ComfyUI
- Utilisateur ComfyUI
Le bouton Save du visualiseur envoie une requête à /comfyui-uml/save, déclarée avec les autres routes dans nodes/uml_routes.py.
2.1. Scénario : Tracer un diagramme de séquence à partir d’un prompt avec Ollama en local
- Lancer comfy node install comfyui-uml (ou cloner dans ComfyUI/custom_nodes et faire pip install -r requirements.txt), puis redémarrer ComfyUI.
- Charger workflows/uml_llm_ollama.json dans le canevas ComfyUI.
- Décrire le diagramme dans UML Code Assistant, avec le fournisseur ollama et un modèle local.
- Lancer la file ; UML Render envoie le code généré à Kroki et produit l’image.
- Ouvrir le lien de Diagram Viewer URL pour zoomer, copier le lien ou enregistrer le diagramme dans ComfyUI.
Fichiers consultésREADME.mdnodes/__init__.pynodes/uml_diagram.pynodes/kroki_client.pynodes/uml_llm.pynodes/uml_llm_call.pynodes/uml_viewer_url.pynodes/uml_routes.pyworkflows/uml_llm_ollama.json
3. Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
comfy node install comfyui-umlCommandes déclarées dans les manifestes
4. 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
4.1. Installation
README.md
From Comfy Registry (recommended): Manual:
- Clone or copy this folder into ComfyUI/custom_nodes/.
- Install dependencies: pip install -r requirements.txt or uv sync.
- 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).
4.2. Getting started
CONTRIBUTORS.md
- Clone the repository and open it in your editor.
- Install dev dependencies (pick one):
- uv sync –extra dev (recommended if you use uv)
- pip install -e “.[dev]”
- Run tests: uv run pytest or pytest (from the repo root).
- 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.
Configuration et utilisation
4.3. Usage
README.md
Exploitation et dépannage
4.4. Updating
README.md
4.5. 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.
Développement et contributions
4.6. Testing
README.md
4.7. Development
README.md
To run linting and formatting on commit (JSON and Python):
- Install dev dependencies: pip install -e “.[dev]” or uv sync –extra dev.
- 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.
4.8. Contributing
README.md
4.9. Contributing to ComfyUI-UML
CONTRIBUTORS.md
5. 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.
6. Architecture
Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.
Texte du diagramme
Nœud ComfyUI enregistré
- Depuis Texte du diagramme
- Vers Moteur local
- Vers Service Kroki
Moteur local
Service Kroki
Image et liens du visualiseur
- Depuis Moteur local
- Depuis Service Kroki
Mermaid Diagramme interactif
Vue générale des composants et des échanges vérifiés dans le dépôt.

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 toneRoseDes 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
- 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.
7. Dossier technique
Établi à partir du code au commit 1f14115 (49 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.
7.1. Couches et modules
Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.
Mermaid Vue en couches
flowchart TB
subgraph L_presentation["Présentation"]
direction TB
presentation_0["web/views<br/>8 fichiers"]
presentation_1["web<br/>5 fichiers"]
presentation_2["web/js<br/>3 fichiers"]
end
subgraph L_interface["Points d’entrée et API"]
direction TB
interface_0["nodes<br/>1 fichier"]
end
subgraph L_application["Services applicatifs"]
direction TB
application_0["nodes<br/>1 fichier"]
application_1["scripts<br/>1 fichier"]
end
subgraph L_infrastructure["Données et infrastructure"]
direction TB
infrastructure_0["nodes<br/>1 fichier"]
end
subgraph L_core["Source principale"]
direction TB
core_0["nodes<br/>7 fichiers"]
core_1["(root)<br/>3 fichiers"]
end
subgraph L_tests["Tests"]
direction TB
tests_0["tests<br/>5 fichiers"]
tests_1["(root)<br/>1 fichier"]
tests_2["web<br/>1 fichier"]
end
subgraph L_hosting["Build, CI et hébergement"]
direction TB
hosting_0[".github<br/>10 fichiers"]
end
L_presentation ~~~ L_interface
L_interface ~~~ L_application
L_application ~~~ L_infrastructure
L_infrastructure ~~~ L_core
L_core ~~~ L_tests
L_core ~~~ L_hosting
7.2. Modèle C4
Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.
UML 1 · Contexte du système
La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
Person(P_cli, "Utilisateur CLI")
System(SYS, "ComfyUI-UML", "ComfyUI-UML ajoute des nœuds de diagrammes à ComfyUI")
System_Ext(E0, "Kroki")
System_Ext(E1, "Anthropic API")
System_Ext(E2, "Google Cloud / Firebase")
System_Ext(E3, "Ollama")
System_Ext(E4, "OpenAI API")
Rel(P_cli, SYS, "Utilise")
Rel(SYS, E0, "Appelle")
Rel(SYS, E1, "Appelle")
Rel(SYS, E2, "Appelle")
Rel(SYS, E3, "Appelle")
Rel(SYS, E4, "Appelle")
@enduml
UML 2 · Conteneurs
Un niveau plus près : les parties qui s’exécutent séparément dans le projet, leur langage principal et le chemin des appels entre elles. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
Person(P_cli, "Utilisateur CLI")
System_Boundary(SYS, "ComfyUI-UML") {
Container(APP, "ComfyUI-UML", "TypeScript")
}
System_Ext(E0, "Kroki")
System_Ext(E1, "Anthropic API")
System_Ext(E2, "Google Cloud / Firebase")
System_Ext(E3, "Ollama")
System_Ext(E4, "OpenAI API")
Rel(P_cli, APP, "Utilise")
Rel(APP, E0, "Appelle")
Rel(APP, E1, "Appelle")
Rel(APP, E2, "Appelle")
Rel(APP, E3, "Appelle")
Rel(APP, E4, "Appelle")
@enduml
UML 3 · Composants et couches
Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "ComfyUI-UML") {
Boundary(L0, "Présentation", "layer") {
Component(M0_0, "web/js", "TypeScript, .mjs, JavaScript", "61 fichiers")
Component(M0_1, "web/views", ".mjs, JavaScript", "8 fichiers")
Component(M0_2, "web", "HTML, .mjs, JavaScript", "5 fichiers")
}
Boundary(L1, "Points d’entrée et API", "layer") {
Component(M1_0, "nodes", "Python", "1 fichiers")
}
Boundary(L2, "Services applicatifs", "layer") {
Component(M2_0, "nodes", "Python", "1 fichiers")
Component(M2_1, "scripts", "Python", "1 fichiers")
}
Boundary(L3, "Domaine et règles métier", "layer") {
Component(M3_0, "web/js", "TypeScript, JavaScript", "15 fichiers")
}
Boundary(L4, "Données et infrastructure", "layer") {
Component(M4_0, "nodes", "Python", "1 fichiers")
}
Boundary(L5, "Source principale", "layer") {
Component(M5_0, "nodes", "Python", "7 fichiers")
Component(M5_1, "(root)", "Python", "3 fichiers")
}
Boundary(L6, "Tests", "layer") {
Component(M6_0, "web", "TypeScript, .mjs", "23 fichiers")
Component(M6_1, "tests", "Python", "5 fichiers")
Component(M6_2, "(root)", "Python", "1 fichiers")
}
Boundary(L7, "Build, CI et hébergement", "layer") {
Component(M7_0, ".github", ".yml, .md", "10 fichiers")
}
}
@enduml
UML 4 · Code
Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "ComfyUI-UML" {
package "nodes/uml_llm_call.py" as F0 {
class "LLMCall" as T0_0 {
INPUT_TYPES()
VALIDATE_INPUTS()
run()
}
}
package "nodes/uml_viewer_url.py" as F1 {
class "UMLViewerURL" as T1_0 {
INPUT_TYPES()
run()
}
}
}
@enduml
7.3. Flux de données
Les appels du diagramme GitDiagram, dans l’ordre où on les rencontre depuis les points d’entrée. GitDiagram produit ce graphe par IA; les chemins de fichiers cités ont été comparés à l’arbre du dépôt.
Mermaid Diagramme de séquence
sequenceDiagram
autonumber
participant P0 as Prompt Engine
participant P1 as LLM Call
participant P2 as LLM Providers
participant P3 as Prompt Templates
participant P4 as LLM Code Assistant
participant P5 as UML Render
participant P6 as ComfyUI User
participant P7 as ComfyUI Nodes
participant P8 as Diagram Defaults
participant P9 as Render Backends
participant P10 as Diagram Result
participant P11 as Diagram Viewer URL
participant P12 as ComfyUI Extension
participant P13 as Kroki API
participant P14 as Local Mermaid
P0->>P1: supplies prompt
P0->>P2: loads templates
P0--)P3: loads presets
P4->>P2: calls provider
P4--)P3: loads presets
P4->>P5: provides diagram code
P6->>P7: configures
P1->>P2: calls provider
P5->>P8: uses defaults
P5->>P9: requests rendering
P5--)P10: returns output
P5->>P11: provides Kroki URL
P5->>P12: opens viewer
P7->>P5: runs
P9->>P13: posts diagram
P9->>P14: runs local renderer
Étapes en texte
- Prompt Engine vers LLM Call supplies prompt
- Prompt Engine vers LLM Providers loads templates
- Prompt Engine vers Prompt Templates loads presets
- LLM Code Assistant vers LLM Providers calls provider
- LLM Code Assistant vers Prompt Templates loads presets
- LLM Code Assistant vers UML Render provides diagram code
- ComfyUI User vers ComfyUI Nodes configures
- LLM Call vers LLM Providers calls provider
- UML Render vers Diagram Defaults uses defaults
- UML Render vers Render Backends requests rendering
- UML Render vers Diagram Result returns output
- UML Render vers Diagram Viewer URL provides Kroki URL
- UML Render vers ComfyUI Extension opens viewer
- ComfyUI Nodes vers UML Render runs
- Render Backends vers Kroki API posts diagram
- Render Backends vers Local Mermaid runs local renderer
- Diagram Viewer URL vers ComfyUI Extension opens preview
- ComfyUI Extension vers Viewer URL Utilities builds viewer query
- ComfyUI Extension vers Viewer Shell opens viewer
- Viewer Shell vers Viewer URL Utilities infers format
- Viewer Shell vers View Registry selects view
- Viewer Shell vers Diagram Result fetches diagram
- View Registry vers Format Views loads format view
7.4. Interface publique
Du code extérieur peut utiliser tout ce qui est listé ici. Le projet déclare aussi 8 types publics.
UML Cas d’utilisation
Chaque acteur est un type d’appelant, relié à ce qu’il peut demander au projet. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
left to right direction
actor "Utilisateur CLI" as A_cli
rectangle "ComfyUI-UML" {
usecase "Commande generate" as U0
usecase "Commande normalize" as U1
usecase "Commande sync-formats" as U2
}
A_cli --> U0
A_cli --> U1
A_cli --> U2
@enduml
Ligne de commande 5
Exports du paquet (__all__)
NODE_CLASS_MAPPINGS NODE_DISPLAY_NAME_MAPPINGS WEB_DIRECTORY LLMCall LLMPromptEngine UMLLLMCodeGenerator UMLDiagram UMLViewerURL
7.5. Interface privée
Ces noms sont internes selon les conventions du langage: tiret bas initial, private, static ou pub(crate).
- Assistant préfixé _
- 63
_build_default_code_dictnodes/default_code.py:43_validate_type_formatnodes/kroki_client.py:95_decode_base64_responsenodes/kroki_client.py:146
7.6. Services
Service 1
LLMPromptEngineINPUT_TYPES, VALIDATE_INPUTS, run
7.7. Logique métier
Une fois écartés le code d’interface et les services et entités ci-dessus, ces classes ont le plus de méthodes.
LLMCallSource principale, 3 méthodesINPUT_TYPES, VALIDATE_INPUTS, runUMLViewerURLSource principale, 2 méthodesINPUT_TYPES, run
7.8. Base de données et persistance
7.9. Intégrations externes
Clients HTTP
Hôtes nommés dans le code
kroki.io3 fichiersnodes/uml_diagram.py:295api.anthropic.com1 fichiersnodes/uml_llm_shared.py:69api.openai.com1 fichiersnodes/uml_llm_shared.py:68generativelanguage.googleapis.com1 fichiersnodes/uml_llm_shared.py:71
7.10. Stack et dépendances
Python requirements.txt 2 à l’exécution
Node.js web/js/package.json 2 à l’exécution
Dépendances externes
9 paquets déclarés (3 à l’exécution, 6 pour le développement) dans pyproject.toml, requirements.txt, web/js/package.json.
Tableau des paquets 9
| Paquet | Version | Usage | Rôle | Registre |
|---|---|---|---|---|
kroki | >=0.1.6 | exécution | Access kroki from python | pypi.org |
cairosvg | >=2.7 | développement | A Simple SVG Converter based on Cairo | pypi.org |
comfy-dynamic-widgets | >=0.1.6 | développement | — | pypi.org |
pre-commit | >=3.6.0 | développement | Analyse et formatage | pypi.org |
pytest | >=7.0 | développement | Tests | pypi.org |
pytest-asyncio | >=0.21 | développement | Tests | pypi.org |
ruff | >=0.8.0 | développement | Analyse et formatage | pypi.org |
beautiful-mermaid | ^1.0.0 | exécution | Render Mermaid diagrams as beautiful SVGs or ASCII art. Ultra-fast, fully themeable, zero DOM dependencies. | npmjs.com |
simple-chromium-ai | ^0.2.1 | exécution | Simple type-safe wrapper for Chrome's AI Prompt API - trades flexibility for ease of use | npmjs.com |
7.11. Pipeline CI/CD
7 workflows GitHub Actions, 7 tâches. Chaque boîte est une tâche ; les boîtes à double bord publient ou déploient, et les flèches suivent les dépendances needs.
Mermaid Déroulement du pipeline
flowchart LR
subgraph wf0["Act — comfy-test (Linux CPU)"]
direction LR
wf0_linux_test["linux-test (act)<br/>ubuntu-latest"]
end
subgraph wf1["CodeQL"]
direction LR
wf1_analyze["Analyze<br/>ubuntu-latest"]
end
subgraph wf2["Dependency review"]
direction LR
wf2_dependency_review["Dependency review<br/>ubuntu-latest"]
end
subgraph wf3["Publish to Comfy registry"]
direction LR
wf3_publish_node[["Publish Custom Node to registry<br/>ubuntu-latest"]]
end
subgraph wf4["Pytest"]
direction LR
wf4_pytest["pytest<br/>ubuntu-latest"]
end
subgraph wf5["Stale"]
direction LR
wf5_stale["Mark stale issues and PRs<br/>ubuntu-latest"]
end
t0(["lancement manuel"])
t1(["push · demande de fusion"])
t2(["demande de fusion"])
t3(["lancement manuel · push"])
t4(["demande de fusion · push · lancement manuel"])
t5(["planification · lancement manuel"])
t0 --> wf0_linux_test
t1 --> wf1_analyze
t2 --> wf2_dependency_review
t3 --> wf3_publish_node
t4 --> wf4_pytest
t5 --> wf5_stale
| Workflow | Déclencheurs | Tâches | Publie vers |
|---|---|---|---|
Act — comfy-test (Linux CPU).github/workflows/act-comfy-test-linux.yml | lancement manuel |
| — |
CodeQL.github/workflows/codeql.yml | push, demande de fusion |
| — |
Dependency review.github/workflows/dependency-review.yml | demande de fusion |
| — |
Publish to Comfy registry.github/workflows/publish-node.yml | lancement manuel, push |
| — |
Pytest.github/workflows/pytest.yml | demande de fusion, push, lancement manuel |
| — |
Stale.github/workflows/stale.yml | planification, lancement manuel |
| — |
Workflow Tests.github/workflows/workflow-tests.yml | demande de fusion, push |
| — |
7.12. Déploiement
Mermaid Schéma de déploiement
flowchart LR
repo[("Dépôt GitHub")]
ci[["GitHub Actions<br/>7 workflows"]]
pub_Container_registry[("Registre de conteneurs")]
repo -->|"push ou demande de fusion"| ci
ci -->|"publie"| pub_Container_registry
Où il s’exécute
Publié vers
7.13. Supervision
Ce que le code consigne, mesure et expose pour savoir s’il fonctionne.
7.14. Sécurité
Contrôles
Chaîne d’approvisionnement
- Mises à jour Dependabot
- Mises à jour Renovate
- Politique de sécurité
- Analyse CodeQL
- Fichier de verrouillage (dépendances figées)
- Hooks pre-commit
Variables d’environnement 8
La page reprend les noms sans leurs valeurs et souligne ceux qui ressemblent à des secrets.
BEAUTIFUL_MERMAID_ASCII_USE_ASCII BEAUTIFUL_MERMAID_THEME COMFYUI_UML_SKIP_COMFY_ENV BEAUTIFUL_MERMAID_OUTPUT COMFYUI_UML_PYTEST COMFY_UI_UML_MOCK_LLM GITHUB_ACTIONS OLLAMA_BASE_URL
7.15. Tests automatisés
- Fichiers de test
- 7
- Fichiers source
- 30
- Cas de test, environ
- 49
- Tests unitaires
- 7
Aucun rapport chiffré de couverture dans les sources analysées.
Où sont les tests
Intégration continue
UML Pipeline CI
Le workflow GitHub Actions principal suit ces étapes. Les tâches lancées en parallèle sont côte à côte. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
title Pytest
start
partition "pytest" {
:actions/checkout;
:Install uv;
:Sync dev environment;
:Ruff check;
:Run pytest;
:Set up Node;
:npm ci (web/js local Mermaid);
}
stop
@enduml
Rien trouvé pour: Entités.
8. 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.
9. 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.
11. Fichiers à lire 3
12. Glossaire
Dépôt
Les fichiers source, la configuration et l’historique versionné d’un projet.
README
Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.
Dépendance
Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.
HTTP
Un protocole de requête et réponse utilisé par les navigateurs et services web. Une requête comprend une méthode, un chemin, des en-têtes et parfois un corps.
Port publié
Un port de l’hôte associé au port d’un service dans un conteneur. Sa publication peut rendre le service accessible hors du réseau des conteneurs.
Interface en ligne de commande
Une interface textuelle où les commandes et arguments choisissent les opérations. Les codes de retour permettent aux scripts de détecter un succès ou un échec.
Compilation
Les étapes qui transforment les sources et dépendances en programme exécutable ou en livrable distribuable.
Intégration continue
Des vérifications automatiques lors des changements de source, comme la compilation, les tests et l’analyse statique. Elles ne couvrent que ce qu’elles vérifient.
Mermaid
Un langage de diagrammes textuel. Les nœuds et liens décrivent un modèle ; le diagramme n’exécute pas le projet.
GPU
Un processeur conçu pour les calculs parallèles, dont le rendu graphique et de nombreuses opérations numériques.
Backend
Une implémentation derrière une interface commune. Selon le contexte, il peut s’agir d’un service côté serveur ou d’une implémentation graphique, d’entrée ou de stockage.
13. Références
- antoinebou12. (2026, 5 novembre). ComfyUI-UML. [Software repository] github.com.
- antoinebou12. (2026, 5 novembre). ComfyUI-UML: README. [Repository documentation] github.com.
- antoinebou12. (2026, 5 novembre). __init__.py. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). nodes/uml_diagram.py. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). nodes/kroki_client.py. [Source file] github.com.
- Boucher, A. (2026, 20 octobre). ComfyUI-UML : des diagrammes sous forme de nœuds et d’images. [Project article] antoineboucher.info.
- Boucher, A. (2026, 23 octobre). ComfyUI-UML : Le rendu de diagrammes dans un graphe de nœuds. [Project article] antoineboucher.info.
Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.