L'agent de code en pratique : API, Vibe Code CLI et Vibe Code Web
Sur cette page
Leçon réécrite le 2 novembre 2026. Devstral étant retiré de l’API depuis le 31 juillet 2026, les exemples d’API utilisent Mistral Small 4. La partie Vibe a été reprise d’après la documentation actuelle de Vibe Code : installation, modèle intégré (Mistral Medium 3.5) et trois surfaces, la CLI, l’extension VS Code et Vibe Code Web. Sources : Install and setup · Choose CLI, VS Code, or web sessions · Configuration.
Trois façons de mettre un agent au travail
Un modèle agentique ne vaut que par la manière dont on le branche sur du travail réel. Trois voies s’offrent à vous chez Mistral : l’API, où vous construisez votre propre agent ; Vibe Code en local, dans le terminal ou dans VS Code ; et Vibe Code Web, qui fait travailler l’agent dans un bac à sable distant sur un dépôt GitHub. Chacune correspond à un moment différent de la journée d’un développeur.
Via l’API Mistral
L’API est l’interface la plus flexible : c’est elle qui vous laisse construire vos propres workflows agentiques, avec vos outils et votre logique de contrôle. Commençons par le cas le plus simple, un appel de chat sans outil. On soumet ici à Mistral Small 4 une fonction d’authentification vulnérable et on lui demande un diagnostic. Le temperature=0 n’est pas décoratif : sur une analyse de sécurité, vous voulez un résultat reproductible, pas une variation d’une exécution à l’autre.
from mistralai.client import Mistral
import os
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
response = client.chat.complete(
model="mistral-small-2603",
messages=[
{
"role": "system",
"content": "Vous êtes un agent de développement expert. Analysez le code fourni et proposez des améliorations."
},
{
"role": "user",
"content": """Voici un fichier Python qui gère l'authentification.
Identifiez les problèmes de sécurité et proposez des corrections :
def login(username, password):
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
user = db.execute(query).fetchone()
if user:
session['user_id'] = user['id']
return True
return False
"""
}
],
temperature=0,
max_tokens=2000,
)
print(response.choices[0].message.content)
Le mode agentique change la nature de l’échange. Au lieu de recevoir un texte, vous déclarez des outils que le modèle peut demander à appeler, et le modèle vous renvoie des tool_calls — un nom d’outil et ses arguments. Les trois outils ci-dessous forment le socle minimal d’un agent de code : lire un fichier, en écrire un, lancer une commande. Avec eux, la consigne « ajoute des type hints à tous les fichiers de src/utils/ » devient exécutable, alors qu’elle serait restée une suggestion en mode chat.
tools = [
{
"type": "function",
"function": {
"name": "lire_fichier",
"description": "Lire le contenu d'un fichier source",
"parameters": {
"type": "object",
"properties": {
"chemin": {
"type": "string",
"description": "Chemin relatif du fichier"
}
},
"required": ["chemin"]
}
}
},
{
"type": "function",
"function": {
"name": "ecrire_fichier",
"description": "Écrire du contenu dans un fichier",
"parameters": {
"type": "object",
"properties": {
"chemin": {"type": "string"},
"contenu": {"type": "string"}
},
"required": ["chemin", "contenu"]
}
}
},
{
"type": "function",
"function": {
"name": "executer_commande",
"description": "Exécuter une commande shell",
"parameters": {
"type": "object",
"properties": {
"commande": {"type": "string"}
},
"required": ["commande"]
}
}
}
]
response = client.chat.complete(
model="mistral-small-2603",
messages=[
{
"role": "user",
"content": "Explore le projet et ajoute des type hints Python à tous les fichiers du dossier src/utils/"
}
],
tools=tools,
tool_choice="auto",
)
# Traiter les appels d'outils renvoyés par le modèle
for tool_call in response.choices[0].message.tool_calls:
print(f"Outil : {tool_call.function.name}")
print(f"Arguments : {tool_call.function.arguments}")
Notez que rien ne s’exécute tout seul : la boucle — appeler l’outil, renvoyer la sortie au modèle, redemander la suite — reste entièrement à votre charge. C’est le prix de la flexibilité, et c’est exactement ce que le CLI Vibe prend en charge à votre place.
Via Vibe Code en local : la CLI et l’extension VS Code
Vibe Code est le mode « code » de Vibe, l’agent de Mistral. En local, il prend deux formes qui partagent le même moteur, la même configuration et le même historique de sessions : la CLI, dans le terminal, et l’extension VS Code, qui ajoute le contexte de l’éditeur (fichier actif, sélection, diffs). L’installation de la CLI tient en une ligne sous macOS et Linux :
# Installateur officiel (installe uv au besoin, puis le paquet mistral-vibe)
curl -LsSf https://mistral.ai/vibe/install.sh | bash
# Ou installation manuelle
uv tool install mistral-vibe
Vous vous placez ensuite dans votre projet et vous lancez vibe. Au premier lancement, un assistant vous propose de vous connecter avec votre compte Mistral (Vibe Code est inclus dans les offres, avec des limites d’usage selon le plan) ou de saisir une clé API. Vous parlez alors à l’agent comme à un collègue qui a les mains sur le clavier :
Explique-moi l'architecture de ce projet.
Ajoute une route API /health qui renvoie l'état du serveur, avec son test.
Lance la suite de tests, corrige ce qui échoue.
Vibe fournit lui-même les outils (lecture et écriture de fichiers, commandes shell) et la boucle agentique que vous deviez écrire à la main avec l’API. Il embarque un modèle intégré, Mistral Medium 3.5, et la commande /model permet d’en choisir un autre parmi ceux configurés (Small 4, Codestral, un modèle local…). Les modifications et les commandes passent par un système d’approbations que vous réglez par agent : relisez-le avant de lui confier un dépôt important. Pour l’automatisation, vibe --prompt lance une exécution non interactive, utile en intégration continue.
Via Vibe Code Web
Vibe Code Web est la troisième surface : un poste de pilotage d’agents distants. Vous créez un projet à partir d’un ou plusieurs dépôts GitHub d’un même propriétaire, vous lancez une session avec une consigne précise, et l’agent travaille dans un bac à sable géré dans le cloud : il clone, planifie, modifie, lance les commandes et les tests, puis prépare une branche ou une pull request que vous relisez dans GitHub. Aucune copie locale n’est nécessaire, et votre machine peut rester fermée pendant que l’agent travaille. Depuis la CLI, la commande /teleport transfère une session en cours vers le web.
Choisissez plutôt la CLI ou l’extension quand la tâche dépend de fichiers, de services ou de secrets présents uniquement sur votre machine.
Comparaison des trois voies
| Critère | API Python | Vibe Code (CLI, VS Code) | Vibe Code Web |
|---|---|---|---|
| Boucle agentique | Vous l’écrivez | Intégrée | Intégrée |
| Accès aux fichiers | Via vos outils | Copie de travail locale | Bac à sable distant, dépôt GitHub |
| Modèle | Celui que vous appelez | Medium 3.5 intégré, autres au choix | Moteur de Vibe Code |
| Mode non interactif | Oui | Oui (vibe --prompt, CLI seulement) | Non |
| Cas d’usage | Pipelines, produits sur mesure | Développement quotidien | Tâches longues sur un dépôt distant |
Lu de droite à gauche, ce tableau décrit un gradient de contrôle : plus vous allez vers l’API, plus vous décidez de tout, y compris de ce qui peut casser.
Ce qui fait la différence à l’usage
La qualité du résultat dépend moins du modèle que de la formulation. « Ajoute de la validation » laisse l’agent inventer l’emplacement, le style et les règles ; « Ajoute la validation d’email dans src/auth/validators.py en utilisant le pattern existant » lui donne le fichier, la convention et la frontière. Dans le même esprit, citez explicitement les fichiers pertinents et les contraintes du projet plutôt que d’espérer qu’il les devine.
Reste la vérification, qui n’est jamais optionnelle : un agent compétent peut malgré tout introduire une régression, en particulier lorsqu’il touche plusieurs fichiers d’un coup. Prenez l’habitude de relire le diff avant de le valider, comme vous le feriez pour la pull request d’un nouvel arrivant. Et gardez en tête le dernier réglage, celui du bon outil : Vibe Code en local pour le développement quotidien, Vibe Code Web pour les tâches longues sur un dépôt distant, l’API pour vos propres pipelines.
Points clés à retenir
- L’API donne un contrôle total : vous écrivez les outils et la boucle agentique
- Vibe Code s’installe avec
curl -LsSf https://mistral.ai/vibe/install.sh | bash(ouuv tool install mistral-vibe) et embarque Mistral Medium 3.5 - La CLI et l’extension VS Code partagent configuration et sessions ;
vibe --promptsert à l’automatisation - Vibe Code Web fait travailler l’agent dans un bac à sable distant et produit branches et pull requests
- La précision des consignes et la relecture du diff restent indispensables