UStackUStack
Cline SDK icon

Cline SDK

Cline SDK は、Clineから抽出したオープンソースのエージェント実行基盤。IDE/CLIで使える再利用ハーネス、プラグイン、設定可能な提供層を提供。

Cline SDK

Cline SDKとは?

Cline SDK(@cline/sdk)は、Clineから抽出したTypeScript製のエージェント実行基盤です。IDEやCLIなど複数の環境でエージェント型コーディングワークフローを支えることを目的としています。コアの目的は、モジュール化された再利用可能な「エージェントハーネス」とアーキテクチャを提供し、チームが特定のアプリのUIライフサイクルに縛られずにエージェントを構築・拡張できるようにすることです。

エージェントループをVS Code拡張機能に結合するのではなく、Clineの再設計ではランタイムを共有サービスとして扱います。これにより、長時間実行の作業をUI再起動に依存せず継続でき、セッションを異なる環境間で移動させながら、低レベルのエージェントループを再利用可能かつステートレスに保つことができます。

主な機能

  • 共有エージェントランタイムアーキテクチャ: ランタイムを特定のIDE実装から分離し、作業がUI再起動に依存しにくくします。
  • 再利用可能なエージェントハーネス(ステートレスループ): 低レベルのエージェントループをステートレスかつ再利用可能に保ちつつ、周囲のランタイムを耐久性と移植性のあるものにします。
  • レイヤー化されたTypeScriptスタック: 各レイヤーが単一の責任を持つレイヤード設計を採用し、フルスタックまたは個別パッケージを必要に応じて選択できます。
  • ランタイムレイヤーのプラグインシステム: プラグインはツールの登録、ライフサイクルイベントの監視、ルールやコマンドの追加、モデルが見る内容の制御が可能です。
  • 柔軟なプラグイン読み込みとパッケージング: プラグインは設定されたパスやワークスペースから読み込め、最初はローカルの.ts/.jsモジュールとして開始し、後でcline.pluginsマニフェストを使ってパッケージ化されたモジュールへ移行できます。
  • プロバイダーレイヤーのLLMサポート(オープンな選択): プロバイダーレイヤーは複数のプロバイダーとOpenAI互換エンドポイントをサポートし、プロバイダーの切り替えは設定駆動で行えるよう設計されています。

Cline SDKの使い方

  1. SDKのインストール: npm i -g @cline/sdkでフルスタックをインストールします。
  2. サーフェスの選択: Cline SDKを使ってVS Code、JetBrains、CLIでエージェントを動作させます(Clineのサーフェス自体もSDK上に構築されています)。
  3. ランタイムプラグインによる動作拡張: ツールを登録し、ライフサイクルイベントに反応するプラグインモジュールを作成(またはパッケージ化)します。
  4. モデル/プロバイダーアクセスの設定: プロバイダーレイヤーを使って、どのモデル/プロバイダーをエージェントが呼び出すかを設定で選択します。

ユースケース

  • 再起動をまたぐ長時間エージェント作業: ランタイムが耐久性を持ち、単一のUIライフサイクルに縛られない設計のため、UI再起動時にエージェントタスクが停止しません。
  • 複数サーフェス間で永続するエージェントの構築: IDEとCLIなど異なるインターフェース間でセッションを移動させつつ、エージェントループをステートレスかつ再利用可能に保てます。
  • プラグインによるチーム固有のカスタマイズ: ランタイムをフォークせずに、追加ツールやルール、コマンドなどのドメイン固有の動作をプラグイン読み込みで追加できます。
  • ローカルプロトタイプから後工程のパッケージ化へ: 最初はローカルの.ts/.jsモジュールとしてプラグインを実装し、チームがcline.pluginsマニフェストで機能を固めた段階で再利用可能なディレクトリへパッケージ化できます。
  • サーバーレスまたはコンポーザブルなエージェントランタイム: レイヤードスタックの小さな部分(プロバイダーロジックやステートレスループなど)を使って、他のランタイムモデルにエージェント動作を埋め込むことができます。

FAQ

  • Cline SDKはVS Code拡張機能にのみ結びついていますか? いいえ。SDKはVS Code、JetBrains、CLI全体でClineを動作させることを目的としており、チームがランタイム上に構築できるように設計されています。IDE固有の実装を再利用するだけではありません。

  • エージェントループにおける「ステートレス」とは何を意味しますか? 再設計により、低レベルのエージェントループはステートレスかつ再利用可能に保たれ、周囲のランタイムが耐久性と移植性を提供します。

  • プラグインはモデルの動作にどのように影響しますか? プラグインはツールを登録し、ライフサイクルイベントを監視し、実行前または実行中にエージェントが見る内容(ルールやコマンドを含む)を制御できます。

  • エージェントを書き換えずにLLMプロバイダーを切り替えられますか? プロバイダーレイヤーは設定駆動で設計されており、複数のプロバイダーとOpenAI互換エンドポイントをサポートしています。

  • 開始時にフルSDKスタックが必要ですか? SDKはレイヤー化されており、フルスタックをインストールするか、プロバイダーレイヤーやステートレスループなどの個別パッケージを小さなサーフェス用に使用できます。

代替手段

  • 既存のエージェントフレームワークに独自ランタイムを組み合わせる: セッションの永続化やツールのオーケストレーションを完全に制御したい場合、すでに独自ランタイムを運用しているなら、代替のエージェントフレームワークの方が適している可能性があります。
  • IDE固有のエージェント拡張モデルを基盤にする: 一部のソリューションではエージェントループをIDEプラグイン内に保持します。導入は比較的簡単ですが、ランタイムの動作がUIライフサイクルと密接に結びつく場合があります。
  • 汎用LLMツールオーケストレーションレイヤーを利用する: エージェントハーネス+ランタイムアーキテクチャの代わりに、ツールオーケストレーション方式ではモデルとツールの呼び出しに焦点を当て、セッションの永続化やライフサイクル管理は通常アプリケーションコード側で扱います。