DiffCI について
DiffCI Coreはローカルリポジトリを分析し、コード変更の影響を受けるテストを特定して、根拠付きのテスト計画を提案します。テスト影響を評価する開発者やメンテナー向けで、保守的なフォールバックと参考情報としての結果により、完全なCIを必須の確認として維持します。
主な機能
- 01Git変更と依存関係の分析
- 02テスト影響の追跡
- 03保守的な全件実行フォールバック
- 04GitHub Actions構造の推定
- 05参考用テストコマンド計画
活用シーン
- 01プルリクエストで影響を受けるテストの確認
- 02必須CIを変更せず選択的テストを評価
- 03JavaScriptまたはTypeScriptリポジトリの変更分析
- 04CIジョブ構造とテスト選択根拠の確認
MCP 対応
agent-pluginパッケージは、公開済みDiffCI CLIをコーディングエージェント向けのローカルMCPプラグインとして提供します。インストールガイドは複数のエージェントと汎用MCPホストを対象にしています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://diffci.com/mcp/v1claude mcp add --transport http diffci-diffci https://diffci.com/mcp/v1{"mcpServers":{"diffci-diffci":{"type":"http","url":"https://diffci.com/mcp/v1"}}}Cursor で開く{"servers":{"diffci-diffci":{"type":"http","url":"https://diffci.com/mcp/v1"}}}VS Code で開く{"mcpServers":{"diffci-diffci":{"type":"http","url":"https://diffci.com/mcp/v1"}}}{"mcpServers":{"diffci-diffci":{"serverUrl":"https://diffci.com/mcp/v1"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
3| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| repo | string | いいえ | 単一の --repo 引数として渡す、任意のローカルリポジトリパス。 |
| action | enum | いいえ | 検証アクション。デフォルトは check です。check | observe | init | verify-workflow |
| platform | enum | いいえ | 表示用コマンドの生成にのみ使用するシェル。デフォルトは posix です。posix | powershell |
詳細
DiffCI Core
CI を高速化するオープンソースのテスト影響分析ツールです。 変更によって影響を受けるテストを評価する開発者やメンテナー向けに、保守的な全件実行へのフォールバックを備えています。AGPL-3.0-only ライセンスです。
コーディングエージェント向けプラグイン
公開されている integrations/agent-plugin パッケージを使うと、公開済みの DiffCI CLI を、チェックアウトを認識するローカル MCP プラグインとして利用できます。
含まれているのは、公開マーケットプレイスのメタデータ、スキル、固定バージョンの npm ランチャーのみであり、製品サービスや非公開のソースコードは含まれていません。
複数のエージェント向けインストールガイドでは、Codex、
Claude Code、Cursor、Grok、Meta Muse Code、汎用 MCP ホストについて説明しています。
# Codex
codex plugin marketplace add DiffCI/core
codex plugin add diffci@diffci-local
# Claude Code
claude plugin marketplace add DiffCI/core
claude plugin install diffci@diffci-marketplace
Cursor Marketplace は、このリポジトリの .cursor-plugin/marketplace.json を読み込みます。
Meta Muse Code は、ルートにあるネイティブの
marketplace.json を読み込みます。公開リスティングの承認前に、
agent-plugin パッケージ内のローカル MCP 設定を使用するか、
https://diffci.com/mcp-server にアクセスしてください。
GitHub Action
公開されている action.yml は、観測のみを行う GitHub Action
ラッパーです。観測対象のチェックアウトの外部で、固定バージョンの公開済み DiffCI CLI を実行し、
既存の CI ジョブを維持したまま、参考情報としてのレポートをアップロードします。
オブザーバー Action ガイドと
ワークフローの例をご覧ください。
v0.3.10 に対応するソースコード
は、配布が Core ネイティブの CLI パッケージへ移行する間も、タグ付きの Core コミット 4c76be14(cli-v0.3.10-source)で
引き続き公開されています。
Git と Node.js 22.5+ がインストールされた既存の Git チェックアウトで、公開済みの CLI をお試しください。
npx "@diffci.com/diffci@latest" check
安全に測定できる場合は全件実行と選択実行のランタイムを比較し、チェックアウトの外部にレポートを作成します。デフォルトではデータを送信しません。テストコマンドはファイルを生成する場合があります。必要な CI の判定を優先してください。
測定例: 1 回の管理された Cal.com サンドボックスのリプレイでは、分析のオーバーヘッドを含むインストール+テスト前処理+テストのランタイムが、44.2% 正味で削減されました。これはジョブ単位での比較であり、本番環境での削減量や、お客様のリポジトリに対する予測ではありません。方法と制約。
Core にスターを付ける · パイロット用リポジトリを提供する · 最初のコントリビューションを見つける。 Watch → Custom → Releases and Discussions で、ベンチマーク結果やサポートの更新情報をご確認ください。公開ロードマップ。
これはスタンドアロンの Core エンジンです。ローカルの JavaScript/TypeScript リポジトリ、サポート対象の Vue コンポーネント、ルートの Go モジュール、標準的な Maven リアクターを分析し、依存関係への影響を追跡します。また、GitHub Actions の構成を推定し、根拠と全件実行へのフォールバックを添えてテストの選択案を提示します。DiffCI アカウント、ホステッドサービス、API キーは不要です。サポート範囲についてはリリースの境界をご覧ください。
既存のリポジトリで DiffCI を試してみませんか? 公開済みの CLI を使用してください:npx @diffci.com/diffci@latest check。実行を伴わない分析オプション、前提条件、結果の解釈についてはCLI クイックスタートをご覧ください。以下のコマンドは、ソースからスタンドアロンエンジンをビルドします。
ローカルで実行する
Git および Node.js 22.5 以降が必要です。
git clone https://github.com/DiffCI/core.git
cd core
npm ci
npm run build
npm test
node dist/cli.js plan --repo /path/to/clean-checkout --base HEAD~1 --head HEAD
対象は、--head でチェックアウトされたクリーンな Git リポジトリのルートである必要があります。シャロークローンを使用する場合は、事前にベースコミットを取得してください。JSON は標準出力に出力され、分析エラーが発生すると、終了コードがゼロ以外になり、完全な CI の実行が推奨されます。Core はリポジトリのスクリプトを実行せず、DiffCI バックエンドに接続せず、テレメトリーも送信しません。インストールには npm レジストリが必要です。
必須ジョブを変更せずに、プルリクエストで同じコマンドを評価するには、アドバイザリー用の GitHub Actions の例をコピーしてください。
プランはあくまで参考情報です。 このリリースでは、CI ジョブの実行、スキップ、キャンセルは行いません。SKIP_CANDIDATE は候補であり、チェックを回避する許可ではありません。Core の評価中は、完全な CI を正式な判断基準として維持してください。コマンドの合成に失敗した場合、未対応の設定がある場合、または証拠が不完全な場合に、テストスイートが空だと判断してはいけません。静的解析は、テストを安全に省略できることの証明にはなりません。
CI で test 以外のライフサイクルゴールやプロファイルを実行する Maven ジョブでは、diffci.json(または package.json の diffci キー)で宣言してください。
{ "maven": { "goal": "verify", "profiles": ["run-its"] } }
これにより、mvn -pl tools -am verify -P run-its など、提案されるコマンドが変更されます。Core は引き続きそのコマンドを実行しません。実行に使用する前に、リポジトリの CI ワークフローと照らし合わせてコマンドを確認してください。
含まれる機能
単一の Vitest テストフェーズを持つ、宣言済みの pnpm ワークスペースでは、パッケージごとのコマンドプランを作成できます。選択される各パスは、宣言済みパッケージ内で検出されたテストに属している必要があります。実行時の選択は、Windows の制限を超えないようにバッチ処理されます。--typecheck を宣言したパッケージでは、型テストの全件実行フェーズが別途維持されます。複合スクリプト、ライフサイクルフック、所有範囲の重複、または検出上の死角があるパッケージでは、選択実行を行いません。コマンドはあくまで参考情報であり、別途実行する必要があります。CLI で複数のコマンドの実行時間を自動計測するには、追加のインテグレーションが必要です。
| 領域 | 実装 |
|---|---|
| 変更と依存関係 | Git の差分、リポジトリのインベントリ、JS/TS の依存関係グラフ、影響範囲の走査 |
| 安全性とプランニング | リスクシグナル、保守的なフォールバック、常時実行ポリシー、テストの選択、コマンドの合成 |
| CI 分析 | GitHub Actions の証拠、ジョブ/参照グラフ、条件とマトリックスの推定 |
| 再現可能な評価 | 合成ベンチマークと移植可能な回帰テスト |
| 計測 | 現在のプロセスの経過時間、CPU 時間、終了時の RSS、および明示的な入力に基づくコスト/エネルギー/炭素排出量の推定 |
ライブラリのエントリーポイントでは、analyzeCheckout、buildDependencyGraph、ImpactAnalyzer、DefaultCIPlanner、collectEvidence、inferPipeline、measure、estimateImpact をエクスポートします。下位レベルのモジュールは、パッケージのサブパスから利用できます。このリポジトリはエンジンのソースであり、公開されている @diffci.com/diffci CLI もここからリリースされています。以前公開された v0.3.10 パッケージに対応するソースは、タグ付きコミット 4c76be14 のソースアーカイブに保存されています。
npm run typecheck
npm run audit:boundary
npm run benchmark
このベンチマークでは、100 個のモジュールを連鎖させ、100 個のテストファイルからインポートする、一時的な合成リポジトリを 1 つ構築します。1 つの Node.js プロセス内で、同じ依存関係グラフを順番に 3 回構築し、その後フィクスチャを削除します。先に npm ci で依存関係をインストールし、Node.js 22.5 以降で npm run benchmark を実行してください。実行結果を比較する際は、出力される node と platform に加えて、マシンの CPU、メモリ、オペレーティングシステム、競合するワークロードを記録してください。3 回のビルドは、プロセス、オペレーティングシステム、コンパイラのウォームアップ効果を共有します。キャッシュが制御された独立した反復実行ではありません。
runs の各エントリには、次のフィールドがあります。
| 項目 | 解釈 |
|---|---|
basis: "measured" | プロセスカウンターは推定値ではなく、観測値です。 |
scope: "current-process" | 対象はベンチマークの Node.js プロセスのみであり、ホスト、コンテナー、CI ジョブ全体ではありません。 |
wallSeconds | 1 回の buildDependencyGraph 呼び出しにかかった実時間です。 |
cpuSeconds | その呼び出し中に現在のプロセスが消費したユーザー時間とシステム時間の合計です。実時間とは異なる場合があります。 |
rssBytesAtEnd | 呼び出し後にサンプリングした常駐セットサイズです。ピークメモリでも、その呼び出し単独で割り当てられたメモリでもありません。 |
nodes, edges | グラフのサイズです。現在のフィクスチャでは、ノードが 200 個、依存関係エッジが 199 個になるはずです。 |
confidence | この合成フィクスチャに対する依存関係グラフの信頼度です。COMPLETE であっても、実際のリポジトリで安全にテストを省略できることの証明にはなりません。 |
たとえば、wallSeconds: 0.79、cpuSeconds: 0.84、rssBytesAtEnd: 327868416 は、1 回のグラフ構築に約 0.79 秒かかり、現在のプロセスの CPU 時間を約 0.84 秒消費し、終了時の RSS が約 328 MB だったことを意味します。CI が 0.79 秒高速化した、あるいは 328 MB 節約できたという意味ではありません。このスクリプトはテスト、インストール、ビルド、全件実行と選択実行の比較を行わないため、その計測時間を CI の削減時間として報告してはいけません。
別の estimateImpact API は、呼び出し元から提供された computeSeconds、価格、電力、電力網の排出原単位の前提に基づいてのみ、estimatedUsd、estimatedKwh、estimatedKgCo2e を計算できます。これらの値の basis は "estimated" であり、モデル化されたシナリオであって、ベンチマーク出力、物理的な測定値、請求記録、または検証済みの排出回避量ではありません。
スポンサー
DiffCI Core は、GitHub Sponsors の支援を受けています。スポンサーからの資金は、メンテナンス、より幅広い言語および CI のサポート、再現可能なベンチマークに充てられます。
パートナー
現在、パートナースポンサーはいません。最初のスポンサーになる。
チームスポンサー
現在、チームスポンサーはいません。チームスポンサーのロゴは diffci.com/sponsors にも掲載されます。
支援者
現在、支援者はいません。月額 25 ドル以上の支援者をこちらに掲載します。
スポンサーからのバグ報告には sponsor ラベルが付けられ、優先的にトリアージされます。
Core と Cloud
| コンポーネント | 提供状況 | ライセンス |
|---|---|---|
| この Core リポジトリ | ソース公開 | AGPL-3.0-only |
| DiffCI Cloud:ホスティング、課金、組織管理、ダッシュボード、マネージドサービス | ソース非公開 | プロプライエタリ。このリポジトリには含まれません |
| オプションのエンタープライズモジュール | このリポジトリでは未公開 | 提供される場合は、別個のソース公開ライセンスが適用されます |
このリポジトリに含まれるのは、明示的に抽出された Core ファイルとスタンドアロンのツールのみです。非公開のモノレポの履歴、顧客データ、デプロイ設定、Cloud の実装は含まれていません。Core は単独で利用できますが、非公開製品がすでにこのパッケージを利用するよう移行済みであることを約束するものではありません。
ライセンスと貢献
LICENSE、NOTICE、CONTRIBUTING.md を参照してください。AGPL は商用利用を許可するライセンスであり、非商用ライセンスではありません。ネットワーク経由で使用される改変版に適用されるものを含め、その義務はライセンスで定められています。助成金の対象となるかどうかは、個々の助成契約によって異なります。このリポジトリの構成によって、対象資格や法的な分離が保証されることはありません。
対象範囲と現在の制限については、リリースの境界 を参照してください。
役に立ちましたか?エンジンにスターを付けて、再現可能なパイロット結果を共有してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。