Skip to content

Vue d'ensemble de l'architecture Cline

源码版本v4.0.10

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 : activate assemble 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, recursivelyMakeClineRequests pilote récursivement chaque itération.
  • Analyse du message assistant : parseAssistantMessageV2 dé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 : ToolExecutorCoordinator distribue par nom ClineDefaultTool vers plus de 25 handlers.
  • Canal Provider : buildApiHandler aiguille 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'outilsProviderprompt système et modesMCP et sous-agentsstockage et Hooks.

Voir la documentation officielle : Site de Cline · Documentation Cline · GitHub