Subagents : déléguer des tâches spécialisées
Le principe de la délégation
Dans un projet complexe, certaines tâches sont indépendantes les unes des autres : analyser la sécurité d’un fichier pendant qu’un autre processus génère des tests. Plutôt que de tout traiter séquentiellement, Mistral Vibe permet de déléguer des tâches à des subagents.
Un subagent est un agent qui s’exécute de manière indépendante, réalise sa mission, puis renvoie un résultat textuel à l’agent principal. Il ne peut pas poser de questions à l’utilisateur — il doit être autonome.
Subagents vs agents : les différences
Les subagents se distinguent des agents classiques sur plusieurs points fondamentaux :
- Indépendance : un subagent s’exécute dans son propre contexte, sans accès à la conversation en cours
- Pas d’interaction : un subagent ne peut pas utiliser
ask_user_question— il doit se débrouiller seul - Résultat textuel : le subagent renvoie un texte à l’agent principal, qui l’intègre dans sa réponse
- Spécialisation : chaque subagent est conçu pour une tâche précise et bien définie
Configurer un subagent
Pour transformer un agent en subagent, ajoutez le champ agent_type = "subagent" dans le fichier .toml :
# ~/.vibe/agents/test-generator.toml
display_name = "Test Generator"
description = "Génère des tests unitaires pour les fonctions données."
agent_type = "subagent"
safety = "neutral"
model = "codestral-latest"
system_prompt = """
Vous recevez du code source. Générez des tests unitaires complets :
- Tests des cas nominaux
- Tests des cas limites (null, undefined, chaînes vides)
- Tests des erreurs attendues
Framework : le framework de test du projet (Jest, Vitest, Pytest...).
Retournez uniquement le code des tests, prêt à copier.
"""
enabled_tools = [
"read_file",
"grep",
"list_dir"
]
Remarquez l’absence de ask_user_question dans les outils — un subagent ne peut pas demander de clarification.
Cas d’usage concrets
Travail parallèle
L’agent principal peut déléguer plusieurs tâches simultanément à différents subagents :
Agent principal
├── Subagent "test-generator" → génère les tests
├── Subagent "doc-writer" → génère la documentation
└── Subagent "security-checker" → analyse les vulnérabilités
Chaque subagent travaille indépendamment et renvoie son résultat.
Tâches spécialisées
Certaines tâches nécessitent un prompt système très différent de celui de l’agent principal. Plutôt que de surcharger un seul agent, déléguez à un subagent spécialisé :
# ~/.vibe/agents/sql-optimizer.toml
display_name = "SQL Optimizer"
description = "Analyse et optimise les requêtes SQL."
agent_type = "subagent"
safety = "safe"
model = "mistral-large-latest"
system_prompt = """
Analysez les requêtes SQL fournies :
1. Identifiez les problèmes de performance (N+1, full scan, index manquant)
2. Proposez des requêtes optimisées
3. Suggérez les index à créer
Retournez un rapport structuré avec avant/après pour chaque requête.
"""
enabled_tools = ["read_file", "grep"]
Isolation de sécurité
Les subagents offrent une isolation naturelle. Un subagent avec safety = "safe" ne peut pas modifier de fichiers, même si l’agent principal est en mode destructive. Utilisez cette propriété pour confier des analyses à des subagents restreints :
# Subagent qui ne peut QUE lire
agent_type = "subagent"
safety = "safe"
auto_approve = true
enabled_tools = ["read_file", "grep"]
Le subagent built-in explore
Vibe inclut un subagent explore intégré. Il est automatiquement utilisé quand Vibe a besoin d’explorer votre codebase pour répondre à une question. Il fonctionne en lecture seule et renvoie un résumé de ce qu’il a trouvé.
Concevoir un bon subagent
Prompt système autonome
Le prompt doit contenir toutes les instructions nécessaires pour que le subagent accomplisse sa tâche sans poser de question :
system_prompt = """
Analysez TOUS les fichiers TypeScript du projet.
Si un fichier n'est pas trouvé, passez au suivant.
Si le framework de test n'est pas identifiable, utilisez Vitest par défaut.
Retournez toujours un résultat, même partiel.
"""
Outils minimaux
Donnez au subagent uniquement les outils nécessaires. Un subagent d’analyse n’a pas besoin de write_file.
Format de sortie clair
Spécifiez le format de retour attendu dans le prompt système — l’agent principal doit pouvoir exploiter le résultat sans ambiguïté.
Points clés à retenir
- Un subagent est un agent indépendant qui ne peut pas interagir avec l’utilisateur
- Configurez-le avec
agent_type = "subagent"dans le fichier.toml - Les subagents sont idéaux pour le travail parallèle et les tâches spécialisées
- Ils offrent une isolation de sécurité naturelle
- Le prompt système doit être entièrement autonome — pas de questions possibles
- Spécifiez toujours un format de sortie clair dans le prompt