Vue d'ensemble de l'architecture Cline
En une phrase
Cline est un assistant de programmation IA qui combine extension VSCode + boucle agent récursive + coordinateur d'outils : activate assemble le Controller → l'utilisateur envoie un message qui crée une Task → Task pilote par récursion via recursivelyMakeClineRequests le cycle « flux LLM → analyse du message assistant → exécution d'outils → renvoi des résultats » jusqu'à la fin du tour. Les outils sont distribués par nom via ToolExecutorCoordinator, les Providers sont aiguillés par switch dans buildApiHandler, et MCP / sous-agents / troncature de contexte / checkpoints / hooks sont chacun indépendants.
Couches
Une phrase par couche
- Démarrage et hôte :
activateassemble dans l'ordre host → migration → webview → enregistrement des commandes; le Controller détient Task, McpHub et StateManager. - Boucle agent principale : la classe Task est une machine à états d'un seul tour,
recursivelyMakeClineRequestspilote récursivement chaque itération. - Analyse du message assistant :
parseAssistantMessageV2découpe le flux texte du LLM en blocs text / tool_use / reasoning, l'algorithme de diff construit le nouveau contenu de fichier. - Système d'outils :
ToolExecutorCoordinatordistribue par nomClineDefaultToolvers plus de 25 handlers. - Canal Provider :
buildApiHandleraiguille par un switch vers plus de 40 handlers de fournisseurs. - Prompt système et modes : PromptBuilder assemble le prompt système selon la variante de modèle, les modes plan/act contrôlent « seulement planifier » ou « exécuter ».
- MCP et sous-agents : McpHub se connecte aux serveurs MCP externes, SubagentRunner exécute des sous-tâches isolées, ContextManager tronque l'historique.
- Stockage et Hooks : StateManager persiste l'état global, les Hooks déclenchent des commandes externes sur les événements de cycle de vie, les Checkpoints font des instantanés de tâche.
Motivation du découpage en couches
Cline découple totalement « comment s'intégrer à VSCode » (hôte), « comment piloter un tour » (boucle Task), « comment analyser la sortie du LLM » (parsing), « comment exécuter les outils » (tools), « comment appeler le modèle » (providers), « comment construire les prompts » (prompts), « comment étendre » (MCP/sous-agents), « comment persister » (storage). Ainsi changer de modèle n'impacte pas les outils, changer d'outils n'impacte pas la boucle, ajouter un serveur MCP ne modifie pas le cœur. La classe Task est le seul pivot, tout l'état du tour vit sur elle.
Malentendus courants
- « Cline n'est qu'un wrapper ChatGPT » — pas tout à fait. L'aiguillage Provider n'est que la surface; le vrai cœur, c'est la boucle agent récursive (recursive agent loop) + le coordinateur d'outils, le LLM n'est qu'une étape dans la boucle.
- « Les outils sont codés en dur » — ToolExecutorCoordinator est de style registre, les handlers sont dans des fichiers indépendants, on peut les enregistrer et les étendre par nom.
- « plan et act sont deux codes séparés » — non. Les deux partagent la boucle Task, seuls le prompt système et l'ensemble d'outils autorisés diffèrent.
Ordre de lecture recommandé
Commencer par démarrage et hôte, puis lire la classe Task et la récursion, ensuite suivre l'ordre système d'outils → Provider → prompt système et modes → MCP et sous-agents → stockage et Hooks.
Voir la documentation officielle : Site de Cline · Documentation Cline · GitHub