Utiliser un agent de programmation installé comme modèle de chat
Si vous payez déjà un agent de programmation et qu'il est connecté sur la machine qui exécute Libre WebUI, vous pouvez lui parler depuis un chat normal au lieu d'ajouter une clé API distincte. Libre WebUI détecte l'interface en ligne de commande de l'agent et le propose dans le sélecteur de modèles comme n'importe quel autre modèle.
Éléments détectés
À chaque demande de la liste des modèles, Libre WebUI recherche les commandes suivantes dans le PATH du serveur :
| Modèle | Commande | Fourni par |
|---|---|---|
| Claude Code | claude | Anthropic |
| Codex | codex | OpenAI |
| Kiro | kiro-cli | AWS |
| Muse Code | muse | Meta |
| OpenCode | opencode | SST |
| Pi | pi | Mario Zechner |
Tout élément trouvé apparaît dans un groupe Agents du sélecteur de modèles. Rien n'est installé à votre place et aucun fichier de configuration n'est requis : si la commande s'exécute dans le shell de votre serveur, elle apparaît.
Paramètres → Chat → Par défaut identifie aussi ces entrées comme Agent, y compris Strands lorsque votre compte est autorisé à l’utiliser. Les modèles de plugins conservent le nom de leur fournisseur ; seuls les modèles Ollama portent ce libellé. Désactiver Ollama ne masque ni les agents ni les plugins configurés. La fiche d’informations indique le nom affiché et le fournisseur de l’entrée choisie, ainsi que la taille, la famille et le format uniquement si le catalogue les fournit.
Choisir un modèle, pas seulement une interface en ligne de commande
Chaque interface peut proposer plusieurs entrées dans le groupe Agents :
- Claude Code propose sa valeur par défaut connectée, ainsi que Sonnet, Opus, Haiku,
et des sélections explicites Sonnet 5.5 (
claude-sonnet-5-5), Opus 5.5 (claude-opus-5-5) et Haiku 5.5 (claude-haiku-5-5). Sonnet 5.5 nécessite Claude Code 2.1.284 ou une version ultérieure, Opus 5.5 nécessite Claude Code 2.1.280 ou une version ultérieure, et Haiku 5.5 nécessite Claude Code 2.1.293 ou une version ultérieure, tous avec les droits d’accès du compte connecté ; exécutezclaude updatepour mettre à jour la CLI. Les alias Sonnet, Opus et Haiku existants continuent de suivre la correspondance de modèles actuelle de la CLI. - Codex propose sa valeur configurée par défaut ainsi que la famille documentée pour la connexion ChatGPT :
GPT-6 Astra, GPT-6.1 Sol (
gpt-6.1-sol), GPT-6 Sol, GPT-6 Luna, GPT-5.6 Sol, Terra, Luna, GPT-5.5 et GPT-5.3 Codex Spark. La disponibilité dépend de la connexion de l'interface en ligne de commande et des accès du compte. - Kiro répertorie les modèles que son compte connecté peut utiliser (à partir de
kiro-cli chat --list-models) à côté de sa valeur configurée par défaut. Chaque tour s’exécute de façon non interactive sur le moteur d’agent V3 de la CLI, avec son agent par défaut intégré (vibe) imposé ; unchat.defaultAgentpersonnalisé ne s’applique donc pas. Nécessite Kiro CLI 2.27 ou une version ultérieure. - Muse Code propose sa valeur configurée par défaut ainsi que Muse Spark 1.3
(
muse-spark-1.3), Muse Spark 1.3 Contributor (muse-spark-1.3-contributor) et Muse Wonder 1.0 (muse-wonder-1.0). Il se connecte avecmuse login(un compte Meta) ou avec une clé de la Meta Model API fournie parMETA_API_KEYoumuse auth set. Les modèles Contributor sont facturés à un tarif inférieur, car Meta peut s’entraîner sur ce que vous leur envoyez. - Pi s'exécute avec le modèle configuré dans l'interface en ligne de commande elle-même.
- OpenCode répertorie les modèles de chaque fournisseur auprès duquel il est authentifié
(à partir de
opencode models) et exige toujours un choix explicite : sa valeur par défaut au niveau de l'interface peut pointer vers un serveur local inaccessible depuis l'hôte Libre WebUI.
Le moteur Strands intégré apparaît aussi dans le groupe Agents lorsque votre compte est autorisé à l’utiliser. Ce n’est pas une CLI : il s’exécute dans le backend et pilote vos modèles Ollama et ceux de vos plugins de fournisseurs. L’entrée simple Strands (strands) utilise votre modèle de chat par défaut. Les autres entrées (strands:<route>) en proposent une par modèle disponible, telle que Strands · gpt-5.6-sol (Codex (ChatGPT)), et fixent à la fois le modèle et son fournisseur pour la conversation ; un autre fournisseur disponible ne peut pas le remplacer lors d’une panne. Afficher ces choix ne démarre pas le moteur.
Ces mêmes entrées Strands peuvent servir de modèle de tâche dans Paramètres → Chat → Par défaut pour les titres automatiques et résumés de raisonnement. Utiliser le modèle en cours utilise la sélection Strands enregistrée de la conversation. Ces brèves requêtes textuelles appellent directement le modèle fournisseur sous-jacent ; elles n’exécutent pas les outils de l’agent et ne créent pas de session d’agent. Les autres profils CLI nécessitent un modèle de tâche Ollama, de plugin ou Strands pour ces requêtes auxiliaires.
Pi exécute chaque tour sans état (--no-session), avec les outils locaux désactivés et un
message système neutre. Les réponses ne sont donc pas influencées par la configuration personnelle de Pi
associée à l'utilisateur du système d'exploitation du serveur, et les chats n'y touchent jamais.
Kiro fait l’inverse sur ces deux points : il s’exécute avec la configuration Kiro de
l’utilisateur du serveur — l’agent par défaut intégré est imposé, mais les règles de
permission (~/.kiro/settings/permissions.yaml), les serveurs MCP et le modèle par défaut
configuré s’appliquent toujours — et chaque tour est enregistré comme nouvelle session dans
le magasin de sessions Kiro de cet utilisateur (kiro-cli chat --list-sessions l’affiche,
avec la transcription récente du chat à l’intérieur). Aucune option ne permet de le
désactiver ; le contenu des chats se trouve donc aussi dans le répertoire personnel de
l’utilisateur du backend, hors de la base de données Libre WebUI. Les outils de Kiro restent
activés : tout ce que ces règles de permission autorisent — par défaut, les lectures et les
commandes en lecture seule comme date — s’exécute sans demander, et tout appel d’outil qui
exige une approbation est refusé, car un tour de chat ne peut pas répondre à la demande.
Muse Code lit la requête depuis un fichier privé et s’exécute sans interface avec les
approbations désactivées (--approval-mode never), car un tour de chat ne peut pas répondre
à une demande d’approbation. Son propre bac à sable reste activé, et chaque tour dispose
d’un espace de travail temporaire supprimé ensuite : ses écritures de fichiers ne peuvent
donc pas atterrir dans le répertoire personnel de l’utilisateur du serveur. Les tours ne
sont pas enregistrés dans le journal de sessions de Muse (--no-session-log), mais les
paramètres, les règles et le modèle par défaut Muse de l’utilisateur du serveur
s’appliquent.
Utilisation
- Connectez-vous en tant qu'administrateur.
- Démarrez un chat et ouvrez le sélecteur de modèles.
- Choisissez une entrée sous Agents.
- Envoyez vos messages normalement. Les réponses sont diffusées jeton par jeton.
La conversation est enregistrée comme n'importe quel autre chat : vous pouvez la quitter et y revenir, la renommer et la rechercher depuis la palette de commandes. Chaque tour envoie à l'agent une transcription de la conversation récente et diffuse sa réponse.
Qui peut l'utiliser et à quoi l'agent peut accéder
Cette fonctionnalité est réservée aux administrateurs, pour une raison importante. L'agent s'exécute sur l'hôte en tant que même utilisateur du système d'exploitation que le serveur Libre WebUI, et non dans un conteneur Work. Il hérite donc des identifiants de l'agent appartenant à cet utilisateur et de tous les accès dont ces agents disposent habituellement, notamment la possibilité de lire des fichiers et d'exécuter des commandes sur le serveur s'il le décide.
Considérez l’activation comme l’octroi d’un accès shell à la machine pour l’agent. La fonctionnalité est donc désactivée à l’installation : un administrateur doit l’activer dans Paramètres → Gestion des utilisateurs → Accès et politiques → Modèles d’agents CLI. Le réglage est persistant et prend effet immédiatement, sans redémarrage.
Modifier ce réglage actualise immédiatement le catalogue des modèles ; la catégorie Agents contient les entrées CLI directes, tandis que Modèles de plugins contient les intégrations API de fournisseurs telles que Codex (ChatGPT). Strands figure dans la même catégorie, mais dépend de son propre réglage d’accès Moteur Strands et non de ce commutateur : il peut donc apparaître alors que les modèles d’agents CLI sont désactivés. Sa découverte des modèles ne peut pas bloquer celle des agents CLI installés.
Les installations existantes héritent de leur ancien choix Agents enregistré jusqu’à l’enregistrement d’un réglage CLI indépendant.
Pour figer ce choix au niveau du déploiement indépendamment du réglage à l'exécution, définissez la variable d'environnement dans un sens ou dans l'autre (cela verrouille aussi le bouton dans l'interface) :
AGENT_CLI_MODELS_ENABLED=false # or true
Pour un modèle qui peut agir sur des fichiers tout en restant dans un bac à sable, utilisez plutôt Work : il exécute les modèles capables d'utiliser des outils dans un conteneur verrouillé doté d'un espace de travail isolé.
Les mêmes agents dans Work
Work propose les mêmes agents, avec les mêmes choix de modèles et les mêmes connexions, mais les exécute dans le bac à sable de la tâche plutôt que sur l’hôte, derrière un proxy de sortie qui garde les vrais jetons hors du bac à sable. Ils ont leur propre mode d’accès, CLI d’agents dans Work, et n’ont pas besoin du commutateur ci-dessus. Consultez CLI d’agents dans Work.
Suivi de l’utilisation
Ouvrez Utilisation des fournisseurs (/usage) et repérez Agents près du haut de la page. Les activités de Claude Code, Codex, Kiro, Muse Code, OpenCode, Pi et Strands ont des entrées explicites, avec un message clair si la période sélectionnée ne contient aucun appel enregistré.
Les appels CLI effectués via LWUI enregistrent leur résultat, leur durée et les jetons signalés. Chaque invocation produit un seul événement d’utilisation ; les instantanés répétés et rapports par étape ne dupliquent ni les événements ni les compteurs. Les compteurs absents restent non signalés. Arrêter une réponse enregistre une annulation, et une sortie CLI en échec ne devient pas un succès simplement parce qu’un texte partiel a été produit. L’utilisation des appels CLI extérieurs à LWUI n’est pas importée.
Les appels Strands sont attribués à l’agent Strands. Consultez Utilisation des agents pour la ventilation et les limites.
Configuration
| Variable | Valeur par défaut | Fonction |
|---|---|---|
AGENT_CLI_MODELS_ENABLED | non définie | Fixe la fonction sur true/false ; sans valeur, suit le bouton d'administration (désactivé par défaut) |
AGENT_CLI_TIMEOUT_MS | 600000 | Durée maximale d'un tour d'agent avant son arrêt forcé |
Dépannage
Le groupe Agents n’apparaît pas. Vérifiez que la fonctionnalité est activée dans Paramètres → Gestion des utilisateurs → Accès et politiques → Modèles d’agents CLI (elle est désactivée par défaut) et que vous êtes connecté comme administrateur. Vérifiez ensuite que la commande se trouve dans le PATH du processus backend, et pas seulement dans celui de votre shell interactif. Un gestionnaire de services, un conteneur Docker ou un lanceur de bureau démarre souvent avec un PATH bien plus réduit qu’un terminal de connexion.
La réponse échoue immédiatement. Exécutez manuellement la même commande en tant qu'utilisateur du serveur
(claude -p "hello", codex exec "hello", muse exec "hello" ou
echo hello | kiro-cli chat --no-interactive --output-format stream-json --agent-engine v3 --agent vibe).
Kiro CLI 2.27 ou une version ultérieure est requis ; une CLI plus ancienne échoue d’abord ici,
où son erreur est visible — dans le chat, le même échec apparaît seulement sous la forme
Kiro exited unsuccessfully. La plupart des échecs proviennent d'une connexion
expirée demandée par l'agent ou d'une limite de débit de l'abonnement sous-jacent.
OpenCode, en particulier, ne signale l'expiration de la connexion à un fournisseur que dans ses propres journaux ;
relancez opencode auth login en tant qu'utilisateur du serveur. Kiro se connecte via
kiro-cli login ; une session expirée échoue de la même manière. Muse Code affiche
missing meta credentials tant que muse login n’a pas été exécuté en tant qu’utilisateur
du serveur.
Les réponses s'arrêtent en cours de route. Un long tour a peut-être atteint AGENT_CLI_TIMEOUT_MS. Augmentez
sa valeur ou divisez la demande en étapes plus petites.