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 的順序往下。