Open7

Clineのデータの持ち方

watanywatany

とりあえずClineにClineのリポジトリを読んでもらう

Cline.botへのデータ送信分析レポート

概要

このレポートでは、Cline VSCode拡張機能がどのようなタイミングでCline.botにデータを送信するかについて、コードベースの詳細な分析結果をまとめています。特に、Cline以外のプロバイダー使用時にデータが送信されるかどうかに焦点を当てています。

1. テレメトリーデータの送信

src/services/posthog/telemetry/TelemetryService.tsで実装されている機能により、PostHogを通じて匿名の使用状況データが送信されます。

重要な特性:

  • テレメトリーはユーザーがオプトインした場合のみ有効
  • VSCodeの全体的なテレメトリー設定が無効の場合、Clineのテレメトリーも自動的に無効
  • 送信される情報は以下に限定:
    • タスクの開始・終了タイミング
    • 計画/実行モードの切り替え
    • 使用されるツールの種類
    • トークン使用量(内容ではなく数値のみ)
    • システム情報(OS、VS Code環境)
    • UI操作パターン

送信されないデータ:

  • コードの具体的な内容
  • プロンプトテキスト
  • 会話の内容

2. Clineプロバイダーを使用する場合のAPI通信

src/api/providers/cline.tsでClineプロバイダーを使用してAIモデルを実行する場合、以下の通信が発生します:

this.client = new OpenAI({
  baseURL: "https://api.cline.bot/v1",
  apiKey: this.options.clineApiKey || "",
  defaultHeaders: {
    "HTTP-Referer": "https://cline.bot",
    "X-Title": "Cline",
    "X-Task-ID": this.options.taskId || "",
  },
})

また、使用状況データを取得するための追加リクエストも行われることがあります:

const response = await axios.get(`https://api.cline.bot/v1/generation?id=${this.lastGenerationId}`, {
  headers: {
    Authorization: `Bearer ${this.options.clineApiKey}`,
  },
  timeout: 15_000,
})

3. アカウント関連の機能

src/services/account/ClineAccountService.tsでClineアカウントを持っている場合、以下の機能でデータ通信が発生します:

  • ユーザーのクレジット残高取得: /user/credits/balance
  • 使用履歴の取得: /user/credits/usage
  • 支払い履歴の取得: /user/credits/payments

これらはユーザーがClineアカウントを持ち、APIキーを設定している場合のみ実行されます。

4. MCPマーケットプレイスの操作

src/core/controller/mcp/downloadMcp.tsでMCPサーバーをマーケットプレイスからダウンロードする際に通信が発生します:

const response = await axios.post<McpDownloadResponse>(
  "https://api.cline.bot/v1/mcp/download",
  { mcpId },
  {
    headers: { "Content-Type": "application/json" },
    timeout: 10000,
  },
)

5. エラー報告システム(Sentry)

src/services/error/ErrorService.tsで実装されているエラー報告システムでは、Sentryを使用してエラーデータが送信されます:

Sentry.init({
  dsn: "https://7936780e3f0f0290fcf8d4a395c249b7@o4509028819664896.ingest.us.sentry.io/4509052955983872",
  environment: process.env.NODE_ENV,
  release: `cline@${pkg.version}`,
  // ...
})

このエラー報告機能も:

  • テレメトリーと同様にユーザーがオプトインした場合のみ有効
  • VSCodeの全体的なテレメトリー設定と連動
  • エラーメッセージとスタックトレースを送信する可能性がある

6. その他の可能性のある通信

コードベースの分析から、以下のような追加の通信が発生する可能性があります:

  1. 自動更新の確認

    • 拡張機能の更新確認のためのAPI通信
    • 新機能通知のためのデータ取得
  2. 機能フラグ

    • src/services/posthog/feature-flags/FeatureFlagsService.tsに機能フラグサービスが存在することから、機能の有効/無効を制御するためのAPI通信が発生する可能性

他のプロバイダー使用時のデータフロー分析

他のAIプロバイダー(Anthropic、OpenAI、AWS Bedrockなど)を使用する場合の詳細分析:

  1. データ経路の確認

    • 他のプロバイダーを使用する場合、通信は直接それらのサービスとの間で行われ、Cline.botサーバーを経由することはない
    • コードベース内で他のプロバイダー使用時にClineにデータが送られる仕組みは見当たらない
  2. 認証情報の扱い

    • 他のプロバイダーのAPIキーはVSCodeのシークレットストレージに保存され、Clineサーバーには送信されない
  3. テレメトリーで収集される可能性のある情報

    • 使用されたプロバイダーの名前
    • モデル選択
    • トークン使用量の統計(具体的な内容ではなく数値のみ)
    • ツール使用パターン
  4. エラーレポートで送信される可能性のある情報

    • プロバイダーAPI接続時のエラー(内容は含まない)

重要な点として、異なるプロバイダーを使用する場合、それぞれのプロバイダー用のハンドラー(AnthropicHandlerOpenAIHandlerなど)が使用され、それぞれが直接対応するAPIに接続するよう実装されています。

結論

コードベースの詳細分析の結果、Clineは主に以下のケースでCline.botにデータを送信していることが確認できました:

  1. テレメトリーデータ(オプトイン制)
  2. Clineプロバイダー使用時のAPI通信
  3. アカウント関連の機能を使用時
  4. MCPマーケットプレイス操作時
  5. エラー報告(オプトイン制)

特に重要な点として、他のプロバイダー(OpenAI、Anthropicなど)を使用する場合、プロンプトやレスポンスの内容がCline.botに送信される形跡は見当たりませんでした。他のプロバイダー使用時のデータは直接それらのサービスとユーザー間でやり取りされ、Clineを経由しないことが確認できました。

テレメトリーとエラー報告については、ユーザーのプライバシー設定とVSCodeの全体設定に基づいて制御され、オプトアウト可能です。

watanywatany

Discordで聞いた感じ

  • 上の調査と概ね同じところで使っている
  • ユーザーコード、プロンプト、または個人を特定できる情報は送っていない
  • TOSの話はExtentionには含まれない。TOSは直す予定
watanywatany

諸々総括して、技術的に取得はしていないが規約上好きに取得できそうに見えるので、何とか解決してほしい。(少なくともCline以外のLLM Providerを使っているときは)

このissueをWatchする

https://github.com/cline/cline/issues/3510

toshizoooooootoshizooooooo

issueに返信来てましたね

Cline VS Code拡張機能自体はオープンソースであり、Apache 2.0ライセンスに基づいています。つまり、追加の規約に同意することなく、誰でも自由に拡張機能を使用、変更、配布できます。セルフホスティングまたは独自のAPIキーを使用している場合は、ホスティング版の利用規約は適用されません。

cline.bot/tosの利用規約は、ホスト型 API プロバイダー(「API プロバイダー」ドロップダウンで「Cline」を選択)の利用を選択したユーザーにのみ適用されます。これは、独自の API キーをお持ちでない場合、拡張機能を動作させるオプションのサービスです。これらの利用規約は、サードパーティの推論プロバイダーへのリクエストのルーティングや、ユーザーが「匿名のエラーおよび使用状況レポートを許可する」設定にオプトインした場合にテレメトリを送信するといったシナリオをサポートします。

独自のキー(Anthropic、OpenAI、OpenRouterなど)をご利用の場合、リクエスト、コード、補完情報にはアクセスできません。お客様のデータは当社のサーバーに一切アクセスされず、ご利用はApache 2.0オープンソースライセンスとお客様が設定したAPIプロバイダーのみによって管理されます。

https://github.com/cline/cline/issues/3510#issuecomment-2882263590

watanywatany

Cline ToSが6月6日に更新されました。
https://cline.bot/tos

However, if you install a Cline Extension and direct all model calls through infrastructure you control, Cline does not receive or store your input tokens, output tokens, underlying code, or other User Content.

(機械翻訳)ただし、Cline拡張機能をインストールし、すべてのモデル呼び出しをお客様が管理するインフラストラクチャ経由で直接行う場合、Clineは入力トークン、出力トークン、基礎コード、またはその他のユーザーコンテンツを受信または保存しません。

If you are a User that has installed the open-source Cline extension but direct all model calls through infrastructure you control, and you do not have a User Account, no User information is collected with telemetry data.

(機械翻訳)オープンソースの Cline 拡張機能をインストールしたが、すべてのモデル呼び出しを自分が管理するインフラストラクチャ経由で直接実行し、ユーザー アカウントを持っていない場合、テレメトリ データとともにユーザー情報は収集されません。