Choisissez un fournisseur, pas un port
Le panneau affiche un sélecteur de fournisseur — des puces Claude / ChatGPT / Gemini / Antigravity / Grok / Kimi / GLM / Ollama / LM Studio / llama.cpp / OpenRouter / Endpoint personnalisé (les fournisseurs expérimentaux comme Copilot apparaissent derrière le commutateur expérimental). En cliquer une connecte ce fournisseur sur le seul orchestrateur partagé (un port de pont sert tous les fournisseurs ; chaque onglet du panneau choisit son fournisseur lors de la poignée de main). L’URL du pont vit sous Avancé pour les orchestrateurs gérés par l’utilisateur. Changer de fournisseur démarre une nouvelle conversation — les conversations ne sont pas partagées entre fournisseurs — et le panneau poste une note système qui le dit. Le placeholder de la zone de rédaction suit le backend actif (« Demandez à Claude… » / « Demandez à Ollama… »).Se connecter (une fois par fournisseur — ou pas du tout)
- Claude —
claude(ouclaude setup-token) — OAuth claude.ai (abonnement). - ChatGPT (Codex) —
codex login— connexion ChatGPT (abonnement) ; passe par l’app-server Codex. - ChatGPT (OAuth direct) — aucune étape supplémentaire si vous avez
déjà lancé
codex login: le backendchatgptréutilise~/.codex/auth.jsonet parle à ChatGPT directement (pas de processus Codex). Si l’accusé dit que le fichier d’auth manque, lancezcodex loginune fois. - Gemini —
gemini— connexion Google. Notez que la connexion Google individuelle gratuite a été retirée le 2026-06-18 : le backend CLI Gemini a maintenant besoin d’uneGEMINI_API_KEYou d’un compte entreprise/Code Assist. Abonnés individuels : utilisez Antigravity ci-dessous. - Antigravity (abonnement Google) — installez le CLI Antigravity
officiel depuis antigravity.google, lancez
agyune fois et terminez la connexion Google (forfaits AI Pro/Ultra et gratuits). Le backend piloteagy -ppar tour avec la continuité de conversation--continue, lit le catalogue de modèles en direct depuisagy models, et branche les outils MCP ComfyUI + panneau via un.agents/mcp_config.jsond’espace de travail sûr à fusionner. Capacités réduites par conception (pas de flux d’événements machine-readable documenté) : le texte de la réponse finale arrive en flux, mais il n’y a pas de progression par outil ni d’entrée image. La continuité de conversation utiliseagy --continue(la dernière conversation du compte), donc lancez UN seul onglet antigravity à la fois — un second onglet, ou une sessionagyinteractive dans un terminal, peut voler le fil.COMFYUI_MCP_ANTIGRAVITY_MODELépingle un modèle,COMFYUI_MCP_ANTIGRAVITY_PATHpointe vers une installation hors standard. - Grok — installez le CLI Grok (xAI / Grok Build) et lancez
grokune fois pour vous connecter ; le backend le pilote en mode ACP. Le panneau propose aussi une ligne de connexion OAuth dans le panneau quand Grok n’est pas prêt. - Kimi (recommandé) — installez le CLI Kimi Code
et lancez
kimi login(flux device-code) ; le backend réutilise cette connexion depuis~/.kimi-code/credentials/kimi-code.json(le chemin héritage~/.kimiest encore lu en repli). Ça utilise votre abonnement Kimi Code et c’est la façon préférée de lancer Kimi — moins cher et à limites plus hautes que la clé Moonshot au jeton ci-dessous. DéfinissezKIMI_API_KEYà la place seulement pour le CI / l’usage sans CLI, ouKIMI_CODE_HOMEpour pointer vers un répertoire d’identifiants non par défaut (KIMI_SHARE_DIRest encore honoré pour quiconque a défini l’ancien nom). La connexion OAuth dans le panneau est aussi proposée. - GLM — définissez
ZAI_API_KEY(Z.AI Coding Plan ;GLM_API_KEY/ZHIPUAI_API_KEYaussi acceptées). Pas de CLI. - Kimi K3 (Moonshot) — l’alternative au jeton quand vous n’avez
pas d’abonnement Kimi Code (préférez le chemin Kimi ci-dessus si
vous en avez un). Définissez
MOONSHOT_API_KEYdepuis platform.kimi.ai. Pas de CLI. C’est la clé plateforme Moonshot (modèle par défautkimi-k3, basehttps://api.moonshot.ai/v1) — distincte du fournisseur Kimi ci-dessus, qui est l’abonnement de code Kimi Code. Remplacez le modèle avecCOMFYUI_MCP_MOONSHOT_MODELet la base avecCOMFYUI_MCP_MOONSHOT_BASE_URL. - MiniMax — définissez
MINIMAX_API_KEYdepuis platform.minimax.io. Pas de CLI. Le modèle par défaut estMiniMax-M3et la base par défaut est l’endpoint globalhttps://api.minimax.io/v1(compatible OpenAI, auth Bearer simple). Pour la région Chine, définissezCOMFYUI_MCP_MINIMAX_BASE_URL=https://api.minimaxi.com/v1. Remplacez le modèle avecCOMFYUI_MCP_MINIMAX_MODEL. - Copilot (expérimental) — connectez-vous depuis la ligne de fournisseur expérimental du panneau. Éteint par défaut ; activez d’abord les backends expérimentaux dans Réglages.
- Ollama (local) — pas de connexion. Installez Ollama et tirez un
modèle capable d’appeler des outils (
ollama pull gemma4:e4b). Pour un modèle hébergé à la place, définissezCOMFYUI_MCP_OLLAMA_API=openai,COMFYUI_MCP_OLLAMA_BASE_URL(par ex.https://openrouter.ai/api/v1), et une clé API (COMFYUI_MCP_OLLAMA_API_KEY/OPENROUTER_API_KEY). - Endpoint personnalisé — pas de flux de connexion. Pointez-le vers
n’importe quel
/v1compatible OpenAI (vLLM, DeepSeek, Together, Azure, un llama-server distant) dans Réglages → Endpoint personnalisé ; ajoutez une clé API là si le serveur en a besoin (saisie masquée, stockée 0600 par l’orchestrateur). Voir LLM locaux → Endpoint personnalisé.
État de préparation à la connexion et prise en main
Chaque puce de fournisseur se dégrade HONNÊTEMENT quand elle n’est pas prête : l’accusé de connexion vous dit l’étape manquante exacte (« Définissez ZAI_API_KEY… », « lancezcodex login… », « Connectez-vous
depuis la ligne expérimentale… ») au lieu d’échouer à votre premier
message — et un fournisseur dont les identifiants apparaissent plus tard
passe à prêt au prochain Connecter sans redémarrage.
Le panneau détecte l’état de préparation de chaque fournisseur au moment
de Connecter — un CLI dans le PATH plus une connexion sur disque
pour les fournisseurs par abonnement, un binaire présent pour Ollama (un
démon arrêté se dégrade proprement à la connexion). Vous n’avez pas à
deviner quel fournisseur est configuré :
- Une carte de prise en main n’apparaît que lorsque aucun fournisseur n’est prêt, avec l’étape de configuration unique par fournisseur (pour Ollama c’est une installation + un pull de modèle, pas une connexion).
- Si le fournisseur enregistré n’est pas utilisable, le panneau bascule automatiquement vers un fournisseur prêt (votre préférence enregistrée est restaurée une fois que vous l’avez configuré).
- La ligne d’un fournisseur non prêt devient une action « configurer » qui amorce une invite de configuration vers l’agent qui marche.
Comment chaque fournisseur est piloté
L’orchestrateur dépend d’un portAgentBackend neutre vis-à-vis du
fournisseur (injection de dépendances). Chaque fournisseur est un
adaptateur :
Les définitions d’outils
panel_* vivent dans une seule liste
partagée, enregistrée sur chaque chemin, donc la surface de canevas en
direct (y compris le filtrage de confirmation destructrice pour
panel_clear / panel_restart_comfyui) est identique entre fournisseurs.
La parité est automatique — aucun chemin ne réimplémente un outil. Le
backend Ollama/n’importe-quel-LLM enveloppe en plus les deux surfaces
d’outils derrière six outils routeur pour que les petits modèles ne se
noient pas dans les schémas — voir
LLM locaux et autres agents.
Matrice des fonctionnalités
Un descripteur de fonctionnalités par backend laisse le panneau se dégrader proprement sur les fonctionnalités qu’un fournisseur ne peut pas faire :Entrée audio — quels backends, honnêtement
L’agent peut piloter les outils audio de ComfyUI sur chaque backend. Entendre un fichier audio est plus étroit, et le tableau ci-dessus est volontairement conservateur parce qu’une pièce jointe abandonnée en silence est pire qu’une refusée :-
Ollama (le backend
ollama,/api/chatnatif) — pris en charge, vérifié en capacité, et vérifié de bout en bout. L’audio voyage dans le tableauimages[], qui est le propre porteur d’audio d’Ollama plutôt qu’un hack. Confirmé en direct contre un Ollama local avecgemma4:e2b, qui a transcrit un vrai WAV.- Par modèle, pas par fournisseur. Avant d’envoyer quoi que ce soit,
le backend demande à
POST /api/showsi ce modèle signale la capacitéaudio. S’il ne le fait pas, la pièce jointe est refusée par nom, la liste de capacités signalée est citée, et on vous dit quels modèles peuvent entendre (ollama pull gemma4:e2b/gemma4:e4b/nemotron3:33b). Notez queGET /api/tagsrenvoie aussi un tableaucapabilitieset ce n’est pas la même réponse — le même modèle n’y signalait pas d’audio et en signalait depuis/api/show— donc seul/api/showest consulté. - La capacité est revérifiée à chaque tour qui porte de l’audio, parce
qu’un tag Ollama est mutable :
ollama pullpeut remplacer les poids sous le même nom, et un verdict en cache pourrait survivre au modèle qu’il décrivait.
- Par modèle, pas par fournisseur. Avant d’envoyer quoi que ce soit,
le backend demande à
-
LM Studio / llama.cpp / OpenRouter / GLM / Kimi / Moonshot / MiniMax /
Copilot / endpoints personnalisés compatibles OpenAI — tenté, PAS
vérifié en capacité. Tous parlent
/v1/chat/completions, qui n’a aucun endpoint de capacité à interroger, donc l’audio est envoyé comme une partie de contenuinput_audioet on vous dit, à ce tour, que la livraison est non confirmée : « Je ne peux pas confirmer que le modèle les reçoit vraiment — si la réponse ne reflète pas ce qu’il y a dans le fichier, il ne l’a pas entendu. » Refuser à la place refuserait l’audio à chaque endpoint qui n’a simplement pas d’API de capacité ; un garde qui ne peut pas tourner n’est pas un verdict. La formeinput_audioelle-même a été vérifiée contre l’endpoint compatible OpenAI d’Ollama ; qu’un hôte tiers donné l’honore n’est pas quelque chose que nous pouvons vérifier, et nous ne le prétendons pas. -
Claude, ChatGPT (Codex), Codex CLI, Gemini, Grok, Antigravity, pi —
pas d’entrée audio dans ce build. Joindre de l’audio est refusé avant
que le tour soit construit, et vous et le modèle en êtes informés, en
nommant le fournisseur et ce qui marcherait à la place.
Sur Gemini/Grok c’est une omission volontaire plutôt qu’un trou de
protocole : ACP définit bien un ContentBlock
audio, mais il exige que l’agent annonce d’abord une capacité de promptaudio, et aucun des deux CLI n’a été observé le faire. Un chemin d’envoi qui ne peut jamais être exercé, dont le mode d’échec est une pièce jointe dont l’utilisateur n’est jamais informé qu’elle n’est pas arrivée, est pire qu’un refus honnête — donc il n’est pas livré.
Read/WebFetch sur
le contenu image (fichiers raster par extension et octets magiques,
PDF, sorties de notebook, et URL /view de ComfyUI) dès qu’Aveugle est
activé — lu en direct à chaque appel, donc un commutateur en cours de
session lie le tout prochain appel d’outil. Les voies API/locales
(famille Ollama, GLM, Kimi, endpoints personnalisés) ne portent que
notre surface d’outils, donc le nettoyage MCP les couvre entièrement.
Les voies CLI (Codex, Gemini, Grok, Antigravity, pi, Copilot)
exécutent leurs propres binaires d’agent dont les outils de fichiers
intégrés nous ne pouvons pas accrocher — activer Aveugle là-bas poste
un avertissement visible qui dit exactement ça, plutôt que d’impliquer
une garantie que nous ne pouvons pas tenir.
Comment un fichier audio arrive sur un tour
L’orchestrateur accepte l’audio sur une tramemessage du panneau de
deux façons :
images remettrait autrement un fichier audio à une partie de contenu
vision. Tout ce qui a une extension audio est déplacé automatiquement
vers le chemin audio — y compris les formats que nous ne savons pas
encoder (.wma, .mid, .aiff), donc vous obtenez « convertissez-le
en l’un de… » plutôt qu’une erreur d’image.
Envoyer le même fichier dans les deux tableaux (comme le fait
l’exemple ci-dessus) est sûr : une réf est identifiée par nom de fichier
- sous-dossier + type, donc elle est livrée une fois et compte une fois contre la limite de deux pièces jointes par tour. Elle n’est pas prise pour un second fichier puis refusée pour ne pas tenir.
Un contrôle de zone de rédaction pour choisir un fichier audio vit
dans le panneau (
comfyui-mcp-panel), qui est un dépôt séparé — cette
partie n’est pas dans cette version. En attendant qu’elle atterrisse, le
contrat filaire ci-dessus est ce qu’un client envoie, et la route est
exercée de bout en bout depuis le côté orchestrateur./revert, double Échap, instantanés par tour) marche sur chaque
backend parce qu’il vit dans l’orchestrateur, pas le fournisseur.
Effort de raisonnement lors d’un changement
Le sélecteur d’effort/modèle est par fournisseur. Un effort choisi survit à un changement de fournisseur en se mappant au niveau valide le plus proche pour le backend cible (le panneau et les backends de l’orchestrateur font le même mapping) :- Claude :
low·medium·high·xhigh·max - ChatGPT (Codex) :
none·minimal·low·medium·high·xhigh·max·ultra(max/ultrasur les modèles de classe GPT-5.6) - Gemini / Ollama : pas d’échelle d’effort visible — le sélecteur est caché.
Parité des connaissances et des coûts
Parce que seul Claude peut charger des skills natives, l’expertise bundlée est publiée comme un outil MCP que n’importe quel backend peut appeler —list_packs, dont les actions couvrent les skills
(skill_list, skill_read), les packs d’installation (list,
read_workflow) et les templates du serveur (list_templates) — plus
le garde-fou GPU-local-vs-API-payante (action: "check_runtime") et
panel_load_workflow en une fois. Voir
Skills, packs et coût d’exécution.
Voir aussi
- Panneau latéral — l’UX complète du panneau
- LLM locaux et autres agents — le routeur à 6 outils, les exigences de modèle, la mise en place Hermes/OpenClaw/Copilot
- Arène des LLM — notez VOTRE modèle sur de vraies tâches ComfyUI
- Skills, packs et coût d’exécution — les outils de parité + de coût
- Doc de conception :
design/agent-backend-injection.md