
Saccade
io.github.Tavrinv0.2.1更新于 Oct 6, 2026
Perceptual visual regression, image evidence inspection and bounded decision proposals.
概览
一个本地 MCP 服务器,让助手查看感知图像差异报告和有界的视觉回归证据。
- 功能
- Saccade 测量图像截图之间的感知差异,在测量区域内定位差异,并按你声明的阈值和策略进行检查。它会写出离线 HTML 报告和带版本的 JSON;本地 MCP 服务器读取已注册的截图根目录,并把报告写到单独的输出根目录。其工具无法批准基线,助手只能查看有界结果并遵循记录好的后续操作。相关命令行流程还覆盖比较、OCR 文本差异、图像检查、媒体分析和性能证据。
- 适用场景
- 当编码助手需要对照基线验证视觉改动、查看 CI 视觉回归输出,或在不使用基线的情况下检查图像证据时,值得添加。它适合已经能产出成对截图、并希望由助手读取报告而不是自行执行比较的团队。
- 运行要求
- 作为本地进程通过 stdio 运行,使用 Cargo 安装,需要 Rust 1.89 或更高版本。需要已注册的截图根目录和单独的输出根目录。默认比较不需要提供商账户或 GPU;可选功能会引入固定版本的模型产物、ONNX Runtime、系统库,或外部 ffmpeg 与 ffprobe。未声明任何认证、环境变量或请求头。
安装
在 SourceWeft 中
- 打开 控制台中的 Saccade,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
[CI] [crates.io] [docs.rs] [License] [MSRV] MCP Registry: io.github.Tavrin/saccade
saccade
saccade is a visual and performance evidence tool for humans, CI and AI agents. It measures perceptual differences, locates them in measured regions (with optional advisory observations), and checks them against the thresholds and policies you declare. It writes offline HTML reports and versioned JSON. Performance conclusions require comparable captures, timing provenance and repeat evidence. Only a human can approve a baseline.
[Report with image differences and numbered hotspots]
Quickstart
The demo exits 1 on purpose: it contains changed and missing captures.
Open saccade-demo/report/index.html to see the result. The
quickstart walkthrough has copyable examples for
comparison, exact identity, configuration, evidence export and local review.
Use cases
Visual verification for coding agents
The local MCP server reads registered capture roots and writes reports under a separate output root. Its tools cannot approve baselines. Agents can inspect bounded results and follow recorded next actions.
See the agent guide and MCP and plugin setup.
CI visual regression
The local Playwright package provides toMatchSaccade and capture stabilization.
A sweep groups page pairs and records capture failures as failures.
See the Playwright matcher, sweep
and CI integration. Sweep needs the optional products feature.
Render and engine evidence
Declared spatial policies distinguish texture_noise_only from
systematic_shift. Required-effect checks can fail on an empty footprint;
capture layers restrict measurement scope and fixed-camera sequences measure
temporal stability. Supply the policies and capture provenance with your inputs.
See rendering evidence and engine capture ingestion.
Image delivery tuning
Audit served formats and search declared encodings for a perceptual target. Local and URL-template adapters record bytes and content types and do not modify originals.
See image tuning. Enable products, plus imgtune-avif for AVIF.
Media analysis records
A media record keeps status and provenance for metadata, quality, fingerprints and optional model sections. Disabled or failed sections are recorded as such. The Python package and local HTTP API use the same analysis path.
See media analysis, Python and HTTP API. Python wheels are built in CI and are not on PyPI yet.
Single-image provenance and integrity
Inspect C2PA credentials, metadata and compression-history indicators without a
baseline. Heuristics have stated limits and do not establish a real/fake verdict.
GPS disclosure is opt-in; C2PA validation needs credentials.
General comparison
Pick registration, hashes, embedding similarity/search, OCR text differences, no-reference quality or document rasterization to fit the question. Model workflows require supplied pinned artifacts and the relevant features.
See choosing a comparison, registration, hashing, embeddings and search, OCR, quality and documents.
Performance evidence
Compare supplied timing sidecars using paired statistics and uncertainty intervals, or locate changes in a sequence. Saccade does not run the benchmark; missing or rejected provenance cannot qualify a speedup.
See paired statistics, change points and identity/performance.
Install
Install with Rust 1.89 or newer:
To build this checkout, use cargo install --locked --path crates/saccade.
Release archives include checksums,
licences and third-party notices. See release instructions.
Video extraction invokes external ffmpeg and ffprobe; neither is bundled.
See model/runtime provisioning and AVIF prerequisites.
Default comparisons need no provider account or GPU. Add optional features with
cargo install ... --features products,ocr, for example.
Metrics and algorithms
Each qualification covers only the recorded contract and evidence. A passing score does not prove correctness or that a difference is invisible.
AI layer
AI observations are advisory. They cannot approve baselines, create exclusions, override deterministic failures, establish equality or qualify timing. Providers are opt-in, with source-root egress authorization, dedicated credential files and call/spend caps; image text and provider output are data, never instructions.
The release qualification attempt with a $15 cap stopped at the prerequisite
check, before any provider request or spend. No frozen corpus with an observed
immutable Gemini revision or exact-source heavy receipt was supplied. Explain,
mask audit, visible-condition checks, blind orders, Jev support, deterministic
cascade routing and optional Jev evidence routing all remain unqualified.
Assist commands still require --experimental; Jev routing stays off by default.
See assist workflows, qualification policy
and the release guide.
Known limitations
- OCR can misread œ in large serif text and omit dashes with some sans fonts; omitted characters and missing spaces before € remain errors.
- Retrieval scores lack qualified calibration. Model/runtime smokes establish execution, not production accuracy or export parity.
- GI occupancy uses supplied masks/layers as a proxy; it does not prove physical illumination, causality or correct rendering.
- LPIPS, DISTS and MUSIQ remain deferred; TrustMark payload decoding is unavailable.
- Captures define the evidence scope. Equal images do not establish application correctness, and perceptual passes do not establish native sample identity.
- Performance conclusions need matched workload, clocks, warmup and repeat noise. Missing checks remain unknown; human approval records do not authenticate an operator.
Documentation and integrations
- Documentation, CLI reference and JSON contracts/schemas.
- MCP server and plugins, agent guide, Python package (CI wheels; not on PyPI), HTTP API and CI.
- CHANGELOG, release guide and contributing.
9 reproducible cases with commands, expected exits and measured output. Pages gallery.
License
MIT OR Apache-2.0, at your option.
FLIP uses the BSD-3-Clause flip-rs port. See third-party notices;
release archives also include generated dependency notices.
MCP Registry ownership: mcp-name: io.github.Tavrin/saccade
来源:README.md,提交 54ee1c3
工具
0版本历史
1- v0.2.1最新Oct 6, 2026

