Saccade について
Saccadeは、開発者、CI、AIエージェント向けの視覚・性能エビデンスツールです。宣言されたポリシーに沿って画像差分を測定し、オフラインレポートを作成します。ベースラインの承認は人が行います。
主な機能
- 01知覚的な画像差分の測定
- 02測定領域内の変化位置を特定
- 03宣言されたポリシーに基づく結果確認
- 04オフラインHTMLとバージョン付きJSONレポートの生成
- 05出所情報を伴う性能エビデンスの比較
活用シーン
- 01コーディングエージェントによる視覚変更の確認
- 02CIでのビジュアルリグレッション検査
- 03空間ポリシーに基づくレンダリングやエンジン画像の評価
- 04ペア統計によるタイミングサイドカーの比較
MCP 対応
SaccadeにはローカルMCPサーバーが含まれ、登録済みのキャプチャルートを読み取り、別の出力ルートにレポートを書き込みます。エージェント向けの制限付きツールでベースラインを承認することはできません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Registry: io.github.Tavrin/saccade
saccade
saccade は、人間、CI、AI エージェント向けの、視覚とパフォーマンスの証拠を扱うツールです。 知覚上の差異を測定し、測定対象の領域内でその位置を特定し(任意で参考情報も提示)、宣言したしきい値やポリシーに照らして確認します。オフラインの HTML レポートとバージョン管理された JSON を出力します。 パフォーマンスに関する結論には、比較可能なキャプチャ、タイミングの来歴、複数回の証拠が必要です。ベースラインを承認できるのは人間だけです。

クイックスタート
saccade demo --out saccade-demo
saccade view saccade-demo
デモには変更されたキャプチャと欠落したキャプチャが含まれているため、意図的に終了コード 1 で終了します。
結果を確認するには、saccade-demo/report/index.html を開いてください。
クイックスタートの手順では、比較、完全一致、設定、証拠のエクスポート、ローカルでのレビューに使える、コピー可能な例を紹介しています。
どのコマンドを使えばよいかわからない場合は、タスクマップと、テスト済みの 5 つのガイド(ビジュアル CI、レンダリングの制御、ドキュメントのエクスポート、メディアの取り込み、配信の調整)を参照してください。saccade doctor を実行すると、インストール環境で実行できる内容がわかります。
ユースケース
コーディングエージェント向けビジュアル検証
ローカル MCP サーバーは、登録済みのキャプチャルートを読み取り、別の出力ルートにレポートを書き込みます。そのツールでベースラインを承認することはできません。エージェントは範囲が限定された結果を調べ、記録された次のアクションに従うことができます。
saccade mcp --root captures --out-root agent-reports
saccade compare captures/before captures/after --out agent-reports/change --json
エージェントガイドとMCP およびプラグインの設定を参照してください。
CI ビジュアル回帰テスト
ローカルの Playwright パッケージは、toMatchSaccade とキャプチャの安定化を提供します。
スイープではページのペアをグループ化し、キャプチャの失敗を失敗として記録します。
node integrations/playwright/sweep.cjs sweep.json captures capture-options.json
saccade sweep compare sweep.json --captures captures/captures.json --out sweep-report --json
Playwright マッチャー、スイープ、CI 統合を参照してください。スイープにはオプションの products feature が必要です。
レンダリングとエンジンの証拠
宣言した空間ポリシーによって、texture_noise_only と
systematic_shift を区別できます。必須効果のチェックでは、フットプリントが空の場合に失敗させることができます。キャプチャレイヤーで測定範囲を制限でき、固定カメラのシーケンスで時間的な安定性を測定できます。ポリシーとキャプチャの来歴を入力とともに指定してください。
saccade compare before after --config render-evidence.toml --out render-report --json
saccade experiment sequence before-frames after-frames --fixed-camera --out temporal-report --json
レンダリングの証拠、エンジンキャプチャの取り込み、時間的安定化、単一フラグのマスクを参照してください。
画像配信の調整
配信される形式を監査し、知覚上の目標に合わせて宣言済みエンコーディングを検索します。 ローカルアダプターと URL テンプレートアダプターはバイト数とコンテンツタイプを記録し、元のファイルは変更しません。
saccade imgtune audit --urls images.txt --accept 'image/avif,image/webp,image/*' --out audit.json --json
saccade imgtune search tuning.json --out tuning-report.json --json
画像の調整を参照してください。products を有効にし、AVIF を使う場合は imgtune-avif も有効にしてください。
メディア分析レコード
メディアレコードは、メタデータ、品質、フィンガープリント、任意のモデルセクションについて、ステータスと来歴を保持します。無効化されたセクションや失敗したセクションも、その状態が記録されます。 Python パッケージとローカル HTTP API は、同じ分析経路を使用します。
saccade analyze-media image.jpg --profile cpu-lite --output-size 1200x800 --json
saccade keyframes video.mp4 --out frames --json
メディア分析、Python、HTTP APIを参照してください。
pip install saccade-vision(Python 3.10 以降)でインストールできます。インポート名は引き続き import saccade です。
単一画像の来歴と完全性
基準画像なしで、C2PA クレデンシャル、メタデータ、圧縮履歴の指標を確認します。ヒューリスティックには明示された限界があり、本物/偽物の判定を確立するものではありません。GPS の開示はオプトインです。C2PA の検証には credentials が必要です。
saccade inspect-image received.jpg --output-size 1600x900 --out inspection --json
saccade inspect-image received.png --hash-index hashes/saccade-hash.v1.json --out indexed-inspection --json
単一画像の検査を参照してください。
一般的な比較
質問に合わせて、位置合わせ、ハッシュ、埋め込みの類似度/検索、OCR テキストの差分、参照画像なしの品質評価、またはドキュメントのラスタライズを選択します。モデルのワークフローには、指定されたピン留め済みアーティファクトと関連機能が必要です。
saccade compare before.png after.png --align similarity --out aligned-report --json
saccade text before.png after.png --out text-report --json
saccade assess image.jpg --out quality-report --json
比較方法の選択、 位置合わせ、ハッシュ、 埋め込みと検索、OCR、 品質、ドキュメントを参照してください。
パフォーマンスのエビデンス
提供されたタイミングサイドカーをペア統計と不確実性区間を使って比較するか、シーケンス内の変化を特定します。Saccade はベンチマークを実行しません。来歴情報が欠落している場合や、来歴情報が却下された場合、速度向上の判定には使用できません。
saccade compare before after --out perf-report --json
saccade history onset --store history --json
ペア統計、 変化点、同一性/パフォーマンス、 タイミング判定、 アブレーションテーブル、 レポートのリンクを参照してください。 パフォーマンスサイドカーキットには、プロデューサー向けのフィクスチャとレシピがあります。ラベル画像はマスクメトリクスでスコアを計算でき、ボックスはCOCOまたはYOLO形式で交換でき(ボックスの交換)、抽出した動画フレームはフレームマップで記述できます。
インストール
Rust 1.89 以降でインストールします。
cargo install saccade --version 0.3.0 --locked
saccade doctor --json
このチェックアウトをビルドするには、cargo install --locked --path crates/saccade を使用します。
リリースアーカイブには、チェックサム、ライセンス、サードパーティに関する通知が含まれています。リリース手順を参照してください。
| Cargo 機能 | デフォルト? | 目的と要件 |
|---|---|---|
compression, parallel, graphics | はい | FLIP、圧縮スコア、グラフィックス、時間的測定。CPU 処理。 |
ai, evaluation | はい | プロバイダーレビューアダプターと評価。呼び出しには明示的な許可と予算が必要です。 |
workbench, mcp | はい | ローカルでのレポート閲覧と、制限付きのエージェントツール。 |
assist | いいえ | 実験的な説明、マスク監査、可視条件のチェック、バッチに関するアドバイス。 |
products | いいえ | Sweep、画像チューニング、デザインソース、通知アダプター。ブラウザーでのキャプチャには、別途 Node.js と Playwright が必要です。 |
imgtune-avif | いいえ | AVIF のエンコード/デコード。システム開発ライブラリ dav1d >=1.3.0 と pkg-config が必要です。 |
semantic-regions, embeddings, local-models | いいえ | ピン留め済みの CPU モデルアーティファクトと、動的に読み込まれる ONNX Runtime 1.22(API 22)。ランタイム/モデルの取得は明示的なプロビジョニング操作です。解析中にダウンロードされることはありません。 |
ocr, ocr-provider | いいえ | モデル/ランタイムをピン留めしたローカル PP-OCRv5 Latin。ホスト型ドキュメント OCR は別途オプトインで、支出/送信データの制御が可能です。 |
documents, credentials | いいえ | SVG/PDF のラスタライズとオフライン C2PA 検証。 |
media-http | いいえ | メディア解析用の制限付き URL 入力。ネットワーク経由の取得には、明示的な URL 入力が必要です。 |
local-vlm, vision-providers | いいえ | 設定済みのローカル/ホスト型ビジョンアダプター。観察結果はあくまで助言です。 |
geometry, dense-motion, prechecks, schema | いいえ | メッシュ測定、密な動きの測定、実験的な安全性/アクセシビリティチェック、スキーマ生成。 |
動画の抽出では外部の ffmpeg と ffprobe を呼び出します。どちらも同梱されていません。
モデル/ランタイムのプロビジョニングとAVIF の前提条件を参照してください。
デフォルトの比較にプロバイダーアカウントや GPU は必要ありません。たとえば、cargo install ... --features products,ocr を使ってオプション機能を追加できます。
Crate
| Crate | 用途 |
|---|---|
saccade-core | 共有の画像測定、エビデンス契約、Rust ワークフローです。 |
saccade-print | ICC 管理による印刷ラスタ比較と診断です。 |
saccade-geo | グリッドおよび nodata メタデータを備えたネイティブ TIFF 測定です。 |
saccade-a11y | 宣言された領域、または自動検出した領域に対するアクセシビリティの事前チェックです。 |
saccade | コマンドラインインターフェースと MCP サーバーです。 |
saccade-py | 共有測定用の Python バインディングです。 |
prechecks 機能を有効にすると、a11y auto は画像内のテキスト領域と
UI 領域を検出し、オフラインでチェックします。
saccade a11y auto screenshot.png --out accessibility-report
メトリクスとアルゴリズム
各適格性評価の対象は、記録された契約とエビデンスに限られます。スコアに 合格しても、正しさや差異が見えないことは証明されません。
| メトリクスまたはアルゴリズム | 適格性評価の状況と範囲 |
|---|---|
| ネイティブデコード済みサンプルの同一性 | 完全なペアとして提供されたもののみを対象とする、完全一致の契約です。 |
| NVIDIA FLIP / HDR-FLIP | 参照に基づく実装です。観察条件と HDR マッピングを宣言する必要があります。 |
| SSIMULACRA2 / Butteraugli 0.9.3 | 参照チェックを記録済みです。知覚ターゲットはユーザーポリシーに従います。実装エビデンスを参照してください。 |
| ColorVideoVDP、数値バッファー、モーション距離、メッシュ距離 | ディスプレイ/単位/フレーム/カメラの契約を宣言します。フィクスチャのチェックでは、コンシューマーレンダラーの適格性は評価されません。 |
| レジストレーション、aHash/dHash/pHash、FAST/oriented-BRIEF マッチング | 生成フィクスチャによる検証済みです。マッチ信頼度は未較正です。 |
| 埋め込み類似度と画像/テキスト検索 | モデル/エクスポートの出所を固定しています。検索の較正は未評価です。 |
| PP-OCRv5 のラテン文字および位置ベースのテキスト差分 | 生成された厳密契約とタイポグラフィ契約をレビュー済みです。フォント固有の失敗は残っています。 |
| ぼかし、ノイズ、ブロックノイズ、バンディング、クリッピング、フォレンジック指標 | 内容に依存する説明的なヒューリスティックであり、真正性の適格性評価はありません。 |
| 空間クラス、エフェクト占有率、レイヤー、時間タイル | 構築された契約/フィクスチャの契約であり、一般的なレンダラーや物理エフェクトの適格性評価はありません。 |
| 対応のある Hodges–Lehmann 推定値、ブートストラップ、変化点 | 構築された統計チェックです。実際のタイミングには、独立した適格性評価済みの実行が必要です。 |
| 安全性/アクセシビリティの事前チェック | 実験的なチェックであり、認証や正式なコンプライアンス評価ではありません。 |
| AI アシスト、Jev サポートとルーティング(Jev は TypeSafe の意思決定モデル)、ブラインド順序処理 | このリリースでは未評価であり、実験段階です。 |
LPIPS、DISTS、MUSIQ(quality-score) | 提供されたレビュー済みエクスポートのみを実行します(local-models ビルド、ランタイムのプルが必要)。固定されたチェックポイントは同梱も既定でダウンロードもされないため、標準インストールでは、不足している要素を表示して終了コード 2 で終了します。 |
| TrustMark ペイロードのデコード | ペイロードビット、BCH スキーマ、訂正ステータスを検証する、オプションのローカル TrustMark Q デコーダーです。TrustMarkを参照してください。 |
AI レイヤー
AI による観察結果は参考情報です。ベースラインの承認、除外の作成、決定論的な 失敗の上書き、同一性の証明、タイミングの適格性評価には使用できません。プロバイダーは オプトイン方式であり、ソースルート単位の送信許可、専用の認証情報ファイル、 呼び出し回数/支出上限を備えています。画像内のテキストとプロバイダーの出力はデータであり、 指示ではありません。
上限を 15 ドルに設定したリリース適格性評価の試行は、プロバイダーへのリクエストや
支出が発生する前に、前提条件のチェックで停止しました。観測された不変の Gemini リビジョン、
または正確なソースの高負荷レシートを含む固定コーパスは提供されませんでした。Explain、
マスク監査、表示条件チェック、ブラインド順序、Jev サポート、決定論的カスケード
ルーティング、オプションの Jev エビデンスルーティングは、すべて未評価のままです。
アシストコマンドには引き続き --experimental が必要です。Jev ルーティングは既定で
オフのままです。アシストワークフロー、適格性評価ポリシー、
リリースガイドを参照してください。
既知の制限事項
- 大きなセリフ体のテキストでは OCR が œ を誤読することがあり、一部のサンセリフ体ではダッシュが省略されることがあります。文字の省略や、€ の前のスペースが欠落する問題は解消されていません。
- 検索スコアのキャリブレーションは十分ではありません。モデル/ランタイムのスモークテストで確認できるのは実行可能性であり、本番環境での精度やエクスポートとの同等性ではありません。
- GI の占有率では、提供されたマスク/レイヤーを代替指標として使用します。物理的な照明、因果関係、正しいレンダリングを証明するものではありません。
- LPIPS、DISTS、MUSIQ には同梱済みのチェックポイントがありません(
quality-scoreにはレビュー済みのエクスポートが必要です)。TrustMark の Q デコードには、明示的にプロビジョニングされたローカルモデルが必要です。 - キャプチャによって証拠の範囲が定まります。画像が一致してもアプリケーションの正しさは証明されず、知覚的な合格もネイティブサンプルの同一性を証明するものではありません。
- パフォーマンスについて結論を出すには、ワークロード、クロック、ウォームアップ、反復時のノイズを揃える必要があります。確認されていない項目は不明のままです。人間による承認記録では、実施者の本人確認はできません。
ドキュメントと連携機能
- ドキュメント、CLI リファレンス、JSON コントラクト/スキーマ。
- MCP サーバーとプラグイン、エージェントガイド、Python パッケージ(PyPI:
saccade-vision)、HTTP API、CI。 - 変更履歴、リリースガイド、コントリビューションガイド。
コマンド、期待される終了コード、測定結果を含む再現可能な 9 つのケース。 Pages ギャラリー。
ライセンス
MIT または Apache-2.0 を選択できます。
FLIP では BSD-3-Clause の flip-rs ポートを使用しています。サードパーティに関する告知をご覧ください。
リリースアーカイブには、生成された依存関係の告知も含まれます。
MCP Registry の所有者:mcp-name: io.github.Tavrin/saccade
Saccade は、Moss エンジンのビジュアルテストツールから生まれました。
ビジュアル比較とは別に、最終的な QR/バーコードのペイロードを検証するには、オプションの
optical-code feature を使用してください。PDF/SVG ページには documents も必要です。
Rust の呼び出し元は、CLI のディスパッチを介さずにコマンドレベルの比較、承認、履歴、マニフェスト、バッチ処理、レビューを行うために、saccade-core ワークフローを使用できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。