mcpField
S
sniff

sniff

本地服务
github.com/Aboudjem开发工具47 周前更新

关于 sniff

sniff 是一款 QA 与无障碍扫描工具,可在真实浏览器中操作运行中的 Web 应用并报告可复现的问题。它为发现项提供证据,也可作为命令行工具或 MCP 服务运行。

主要功能

  1. 01在真实浏览器中遍历应用流程
  2. 02检查 12 类问题
  3. 03发现项附带步骤和证据
  4. 04生成终端、HTML 和 JSON 报告
  5. 05按严重程度设置 CI 退出码
  6. 06支持登录态遍历和源码扫描

适用场景

  1. 01发布前检查开发中的应用
  2. 02依据证据复现浏览器流程问题
  3. 03按发现问题的严重程度拦截 CI 构建
  4. 04检查需要登录的应用流程

MCP 相关

sniff 可作为 MCP 服务供 Agent 使用。README 展示了在 Claude Code 或 Codex 中添加它的方式,并说明可选择扫描和已保存结果读取能力,而不启动浏览器。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

sniff

npm 版本 CI Apache 2.0 许可证 星标

English · 简体中文 · 日本語 · Español · Français

将它指向正在运行的应用。它会在真实浏览器中体验真实用户流程,并用证据告诉你哪些地方确实出了问题。

功能介绍 · 安装 · 使用方法 · 你将获得什么 · 适用于你的编辑器 · 须知

sniff 在有缺陷的应用中操作,并实时输出发现的问题、严重性、置信度、复现步骤和修复方案
claude plugin marketplace add Aboudjem/10x
claude plugin install sniff@10x

功能介绍

大多数代码检查工具只读取源代码,从不运行你的应用;端到端测试框架则要求你自行编写和维护测试。sniff 会在真实浏览器中打开正在运行的应用,像用户一样点击和填写内容,并判断实际发生了什么。

  • 它能发现 12 类错误,包括 HTTP 500 路由和失效链接,以及占位数据、失效的提交按钮、点击返回按钮后表单内容被清空、卡住的加载动画和移动端溢出等问题。
  • 每个问题都有证据。 每条发现都包含对应路由和导致问题的一系列有序步骤,以及检查时捕获的屏幕截图和控制台或网络记录片段。没有步骤,就不会报告问题。
  • 它经过了测试验证。 在一个植入了涵盖全部 12 类错误共 21 个缺陷的测试应用中,另有一个无缺陷的对照页面,sniff 找出了 21 个缺陷中的全部 21 个,且没有在对照页面上报告任何问题。

安装

上方代码块介绍的是 Claude Code 的安装方式,通过 10x marketplace 安装。对于其他 Agent,Vercel skills CLI 会安装同样的三个技能:

npx skills add Aboudjem/sniff

如果要将它用作普通命令行工具,而不使用编辑器:

npx sniff-qa --url http://localhost:3000

npm 包名是 sniff-qa,安装的二进制文件名是 sniff。不要运行 npx sniff,那是一个无关的包。

Node 版本、项目安装和 CI

需要 Node.js 22 或更高版本。npm install -D sniff-qa 会将它添加到项目的 devDependencies 中,而 npx sniff-qa ci 会生成一个包含浏览器缓存和报告构件的 GitHub Actions 工作流。

## 使用方法

1. 启动应用, 使用项目现有的任意开发服务器。

npm run dev

2. 从另一个终端运行 Walk。 sniff 会自动检测常见端口上的开发服务器,因此 --url 是可选的,但传入该参数可以避免猜测。

npx sniff-qa --url http://localhost:3000

3. 查看检查结果。 结果按严重程度分组显示。以下是针对本仓库预置缺陷测试场景的一次实际运行结果摘录,命令为 npx sniff-qa --url http://localhost:4321 --ci --max-pages 12:

sniff v0.8.0  walking http://localhost:4321

  26 findings (+1 low-confidence hidden; use --all)

  CRITICAL (1)
    • [confirmed] Page returns HTTP 500
      /crash  (route/broken-page)
        - Navigate to /crash
        - Server responded with HTTP 500
      fix: The route throws server-side. Check the server logs/handler for this path and return a valid page or a proper error page.
      shot: sniff-reports/crawl/_crash-desktop.png

✓ Scan complete: 26 issue(s) found. Exit code 1 so CI fails on bugs; pass --fail-on none to always exit 0.

添加 --report 可生成可独立查看的 HTML 页面,方便发送给他人。如果环境似乎不正常,请运行 npx sniff-qa doctor。

sniff 的工作方式:爬取、操作、断言、验证、报告

你将获得

sniff 可发现的 12 类缺陷
  • 终端报告:按严重程度分组,每项检查结果都包含步骤、修复方法和截图路径。
  • 可分享的文件:使用 --report 生成可独立查看的 HTML 报告,或使用 --json 生成 JSON。
  • 退出码:当检查结果达到 --fail-on 指定的严重程度时返回非零值,让 CI 因实际缺陷而失败。
  • 置信度标签:每项检查结果都会标注置信度。除非传入 --all,否则终端中会隐藏 uncertain 结果。

0.8.0 版新增:

  • --caps scan,report 将 MCP 服务限制为源代码扫描和已保存结果读取,不启动浏览器,也不下载浏览器。
  • --storage-state auth.json 可检查已登录的应用。该文件中的 Cookie 和令牌值会从所有生成报告的文本中脱敏,但截图像素中不会脱敏。
  • sniff.config 中的 assert 块可按严重程度限制检查结果数量(maxCritical、maxHigh、maxTotal);命令行中的 walk、源代码扫描和发现流程都会执行这些限制。

可在编辑器中使用

可通过 npx skills add 在 Claude Code、Cursor、Codex、Copilot、Gemini CLI 及其他 70 多种 Agent 中使用。Skills 采用 Markdown 格式,因此可使用编辑器指定的任意模型运行。

Agent一行安装命令
Claude Codeclaude plugin install sniff@10x
任意 70 多种 Agentnpx skills add Aboudjem/sniff
Codex、Gemini CLI、OpenCode、Pi./install.sh codex
VS Code(Copilot)./install.sh copilot
其他所有编辑器请参阅 docs/editors.md
改为将其添加为 MCP 服务
claude mcp add sniff-qa npx -- -y sniff-qa --mcp
codex mcp add sniff-qa -- npx -y sniff-qa --mcp

Cursor、VS Code、Gemini CLI、Windsurf、Continue、OpenCode 和 Zed 使用相同的命令,只需将其配置为 JSON 或 TOML 条目即可。每种编辑器对应的配置片段都在 docs/editors.md 中。

须知

重要

无需 API 密钥、账户或注册;除非你自行配置,否则也不会使用 AI 提供商。Walk 和扫描都不会修改源代码。只有 sniff fix 会重写代码,而且仅在你运行该命令时才会执行。

说明

Walk 会点击按钮并提交真实表单,因此可能创建真实数据。请对开发或预发布应用运行,不要对生产环境运行。首次 Walk 还会下载 Chromium 构建版本并缓存,因此该次运行需要联网。

  • 需要运行中的应用。 如果没有启动开发服务器,它会回退到仅扫描源代码,并告知你如何启动完整 Walk。运行 npx sniff-qa scan 可主动执行此类扫描。
  • 死链检查会访问外部链接, 因此 Walk 会向你自己页面已链接的第三方 URL 发起请求。
  • 发现缺陷的 Walk 会有意以状态码 1 退出, 让 CI 构建失败。这不是崩溃。--fail-on none 可关闭严重程度门槛,但 assert 预算仍可能导致运行失败。

了解更多


由 Adam Boudjemaa 构建 · Apache 2.0 · 基于 Playwright 和 axe-core

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。