Visión general de la arquitectura de Cline
En una frase
Cline es un asistente de programación con IA que combina extensión VSCode + bucle recursivo de agent + coordinador de herramientas: activate ensambla el Controller → el usuario envía un mensaje que crea una Task → Task impulsa recursivamente, mediante recursivelyMakeClineRequests, el flujo «LLM stream → parsing del mensaje del asistente → ejecución de herramientas → reflujo de resultados» hasta que la ronda termina. Las herramientas se reparten por nombre desde ToolExecutorCoordinator; el Provider se conmuta en buildApiHandler; MCP, subagents, truncado de contexto, checkpoints y hooks viven cada uno por su lado.
Capas
Cada capa en una frase
- Arranque y host:
activateensambla en orden host → migración → webview → registro de comandos; el Controller retiene Task, McpHub y StateManager. - Bucle principal del Agent: la clase Task es una máquina de estados de una sola ronda;
recursivelyMakeClineRequestsimpulsa recursivamente cada vuelta. - Parsing del mensaje del asistente:
parseAssistantMessageV2corta el flujo de texto del LLM en bloques text / tool_use / reasoning; el algoritmo de diff construye el nuevo contenido del archivo. - Sistema de herramientas:
ToolExecutorCoordinatorreparte por nombreClineDefaultToola más de 25 handlers. - Canal Provider:
buildApiHandlercon un switch deriva a más de 40 handlers de fabricantes. - System prompt y modos: PromptBuilder ensambla el system prompt según el variant del modelo; los modos plan/act controlan si solo se planifica o también se ejecuta.
- MCP y subagents: McpHub conecta a servidores MCP externos, SubagentRunner ejecuta subtareas aisladas, ContextManager trunca el historial.
- Almacenamiento y Hooks: StateManager persiste el estado global; Hooks dispara comandos externos en eventos del ciclo de vida; Checkpoints toma instantáneas de la tarea.
Motivación de la separación por capas
Cline desacopla por completo «cómo integrarse con VSCode» (host), «cómo impulsar la ronda» (bucle Task), «cómo parsear la salida del LLM» (parsing), «cómo ejecutar herramientas» (tools), «cómo llamar al modelo» (providers), «cómo ensamblar el prompt» (prompts), «cómo extender» (MCP/subagents) y «cómo persistir» (storage). Así, cambiar de modelo no afecta a las herramientas; cambiar las herramientas no afecta al bucle; añadir un servidor MCP no toca el núcleo. La clase Task es el único núcleo: todo el estado de la ronda vive en ella.
Malentendidos comunes
- «Cline es un envoltorio de ChatGPT»: no del todo. El reparto del Provider es solo la superficie; el verdadero núcleo es el bucle recursivo de agent más el coordinador de herramientas; el LLM es solo un paso más dentro del bucle.
- «Las herramientas están hardcodeadas»:
ToolExecutorCoordinatores un registro; cada handler vive en su propio archivo y se puede registrar y extender por nombre. - «plan y act son dos códigos separados»: no lo son. Ambos comparten el bucle Task; solo cambian el system prompt y el conjunto de herramientas permitidas.
Orden de lectura recomendado
Empieza por Arranque y host, luego por la clase Task y el impulso recursivo, y después baja en el orden Sistema de herramientas → Provider → System prompt y modos → MCP y subagents → Almacenamiento y Hooks.
Véase la documentación oficial: Cline oficial · Documentación de Cline · GitHub