Cline 架构总览
源码版本v4.0.10
一句话
Cline 是一个 VSCode 扩展 + 递归式 agent 循环 + 工具协调器 的 AI 编程助手:activate 装配 Controller → 用户发消息创建 Task → Task 通过 recursivelyMakeClineRequests 递归驱动「LLM 流 → 解析助手消息 → 执行工具 → 回流结果」直到回合结束。工具由 ToolExecutorCoordinator 按名分发,Provider 在 buildApiHandler 中 switch 分流,MCP/子 Agent/上下文截断/checkpoints/hooks 各自独立。
分层
每层一句话
- 启动与宿主:
activate顺序装配 host→迁移→webview→注册命令,Controller 持有 Task、McpHub、StateManager。 - Agent 主循环:Task 类是单回合状态机,
recursivelyMakeClineRequests递归驱动每一轮。 - 助手消息解析:
parseAssistantMessageV2把 LLM 文本流切成文本/工具/reasoning block,diff 算法构造新文件内容。 - 工具系统:
ToolExecutorCoordinator按ClineDefaultTool名分发到 25+ 个 handler。 - Provider 渠道:
buildApiHandler一个 switch 分流到 40+ 个厂商 handler。 - 系统提示与模式:PromptBuilder 按模型 variant 拼系统提示,plan/act 两种模式控制只规划还是执行。
- MCP 与子 Agent:McpHub 连外部 MCP server,SubagentRunner 跑隔离子任务,ContextManager 截断历史。
- 存储与 Hooks:StateManager 持久化全局状态,Hooks 在生命周期事件触发外部命令,Checkpoints 做任务快照。
分层动机
Cline 把「怎么和 VSCode 集成」(宿主)、「怎么驱动回合」(Task 循环)、「怎么解析 LLM 输出」(parsing)、「怎么执行工具」(tools)、「怎么调模型」(providers)、「怎么拼提示」(prompts)、「怎么扩展」(MCP/子 Agent)、「怎么持久」(storage)完全解耦。这样换模型不影响工具,换工具不影响循环,加 MCP server 不改核心。Task 类是唯一的中枢,所有回合状态都在它身上。
常见误读
- 「Cline 是个 ChatGPT 包装」——不全是。Provider 分流只是表面,真正的核心是递归式 agent 循环 + 工具协调器,LLM 只是循环里的一个步骤。
- 「工具是硬编码的」——ToolExecutorCoordinator 是注册表式,handler 独立文件,可以按名注册和扩展。
- 「plan 和 act 是两套代码」——不是。两者共用 Task 循环,只是系统提示和允许的工具集不同。
推荐阅读顺序
先看 启动与宿主,再看 Task 类 和 递归驱动,然后按 工具系统 → Provider → 系统提示与模式 → MCP 与子 Agent → 存储与 Hooks 的顺序往下。