evalsnap について
evalsnapはcase IDでAgentやツールの出力スナップショットを比較し、変更、スコアと所要時間の差、合否を示します。CLIまたはローカルのMCPサーバーで実行結果を評価でき、入力データはネットワークに接続せずローカルで処理します。
主な機能
- 01case単位の照合と変更検出
- 02スコアと所要時間の差分
- 03回帰と改善の一覧
- 04一致ケースの平均スコア
- 05入力検証と判定
活用シーン
- 01Agentの実行結果をベースラインと比較
- 02スコアが低下したケースを特定
- 03出力と所要時間の変化を確認
MCP 対応
MCPクライアントに`diff_snapshots`ツールを公開します。ベースラインと現在のスナップショットを比較し、ケース別の結果、集計スコア、回帰項目、判定を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| current | array | はい | 現在のスナップショットエントリー(1 件以上) |
| baseline | array | はい | ベースラインのスナップショットエントリー(1 件以上) |
詳細
evalsnap
エージェントを再実行したところ、回答が少し異なっているようです。
しかし、実際に何か悪くなったのでしょうか? evalsnap は、ケース出力のスナップショットを2つ(ベースライン実行と現在の実行)受け取り、case_id で照合して、どこが変わったのかを正確に示します。
- 照合済み、追加、削除 — 両方に存在するケース、現在の実行にのみ存在するケース、ベースラインから消えたケースを、それぞれ ID 順で一覧表示します
- ケースごとの結果 — 照合されたすべてのケースについて、完全一致の文字列比較で出力が変更されていないか、変更されているかを示します。また、スコアの差分と所要時間の差分(いずれかの実行で測定値が記録されていない場合はそれぞれ
null)、スコアが下がった場合にのみ設定されるリグレッションフラグも示します - リグレッションと改善 — リグレッションが発生したケース ID の一覧を順に表示し、スコアが上昇したケース数を示します
- 平均スコア — 両方の実行でスコアが記録されている照合済みケースのみを対象に、それぞれの平均を計算します。そのため、両方で同じケース群を比較できます。該当する照合済みケースがない場合は、両方の平均が
nullになります - 判定 — リグレッションが1件以上ある場合は
fail、それ以外はpassです。追加・削除されたケースは報告されますが、それだけで判定が失敗になることはありません
差分と平均は小数点以下4桁に丸められます。計算は純粋なローカル処理です。ネットワークも設定も必要なく、渡されたスナップショット以外は読み取りません。
不正な入力(空のスナップショット、ID または出力のないケース、片方の実行内での ID 重複、数値以外のスコア、負の所要時間)は、問題のあるパスと実行側を示すエラーで拒否され、部分的な差分は生成されません。
CLI
npx @reneturcios/evalsnap diff --input args.json
npx @reneturcios/evalsnap --version
args.json には、引数オブジェクト全体を記述します。
{
"baseline": [
{ "case_id": "greeting", "output": "hello", "score": 0.9, "duration_ms": 120 },
{ "case_id": "summary", "output": "short text", "score": 0.7 }
],
"current": [
{ "case_id": "greeting", "output": "hello", "score": 0.95, "duration_ms": 110 },
{ "case_id": "summary", "output": "short text", "score": 0.6 }
]
}
各エントリの score と duration_ms は省略可能です。差分は JSON として出力されます。
終了コード:成功時は 0、実行時エラー(読み取り不能または無効な入力ファイル、無効な入力を含む)の場合は 1、使用方法のエラーの場合は 2 です。
MCP サーバー
npx -y @reneturcios/evalsnap mcp
MCP クライアントの設定:
{
"mcpServers": {
"evalsnap": {
"command": "npx",
"args": ["-y", "@reneturcios/evalsnap", "mcp"]
}
}
}
ツール
-
diff_snapshots— 2つの eval スナップショットを case_id で照合して差分を表示します。baseline(配列、必須、1件以上)—{case_id, output, score?, duration_ms?}オブジェクト形式のエントリcurrent(配列、必須、1件以上)— 同じ形式のエントリ
{total_baseline, total_current, matched, unchanged, changed, added, removed, case_results, regressions, improved_count, baseline_avg_score, current_avg_score, verdict}を返します。
Docker
docker run -i ghcr.io/cloudcorprecords/evalsnap
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/evalsnap diff --input /w/args.json
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。