Skip to content

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 のテキストストリームを text/tool_use/reasoning block に切り分け、diff アルゴリズムで新ファイル内容を構築する。
  • ツールシステム:ToolExecutorCoordinatorClineDefaultTool の名前で 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 の順に降りていく。

公式資料: Cline 公式サイト · Cline ドキュメント · GitHub