Aller au contenu principal
Leçon 8 sur 14 · Codestral et agents de code — de Devstral à Vibe Code

L'agent de code en pratique : API, Vibe Code CLI et Vibe Code Web

Leçon 8 sur 14 Mis à jour le 2 novembre 2026 Développeur
Sur cette page
  1. Trois façons de mettre un agent au travail
  2. Via l’API Mistral
  3. Via Vibe Code en local : la CLI et l’extension VS Code
  4. Via Vibe Code Web
  5. Comparaison des trois voies
  6. Ce qui fait la différence à l’usage
  7. Points clés à retenir

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èreAPI PythonVibe Code (CLI, VS Code)Vibe Code Web
Boucle agentiqueVous l’écrivezIntégréeIntégrée
Accès aux fichiersVia vos outilsCopie de travail localeBac à sable distant, dépôt GitHub
ModèleCelui que vous appelezMedium 3.5 intégré, autres au choixMoteur de Vibe Code
Mode non interactifOuiOui (vibe --prompt, CLI seulement)Non
Cas d’usagePipelines, produits sur mesureDéveloppement quotidienTâ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 (ou uv tool install mistral-vibe) et embarque Mistral Medium 3.5
  • La CLI et l’extension VS Code partagent configuration et sessions ; vibe --prompt sert à 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