Token导航 LogoToken导航TokenDH.com
difflens (Byzkhan) logo
开发工具未说明官方级别未说明来源级核验

difflens (Byzkhan)

MCP Server

DiffLens是一款为AI编程代理提供视觉差异检测的MCP服务器,通过比较UI更改前后的截图生成结构化差异报告。

工具数

6

提示词数

0

GitHub Stars

1

资源数

0
开发工具TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

byzkhan

提供方

byzkhan

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

DiffLens

MCP服务器,为AI编码代理提供UI工作的“眼睛”。它在代码更改前后对本地主机页面进行截图,直观地进行比较,并返回带有叠加图像的结构化差异报告。

快速开始

npm install -g difflens-cli
cd your-project
difflens setup
# Restart Claude Code — DiffLens is now active

DiffLens自动工作——只需正常发出UI请求。Claude将在更改前进行快照,并在更改后进行验证,无需您询问。

无需安装即可使用

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "difflens": {
      "command": "npx",
      "args": ["-y", "difflens-cli"]
    }
  }
}

运作原理

  1. 快照 保存基线屏幕截图的页面
  2. 对代码进行更改
  3. 检查 该页面--DiffLens获取一个新的屏幕截图,根据基线运行像素级差异,对更改的区域进行聚类,并返回一个带有注释的覆盖图像的报告

覆盖会使未更改的区域变暗,用红色突出显示更改的像素,在检测到的区域周围绘制边框,并包含一个带有更改百分比的图例栏。

从源代码安装

git clone https://github.com/byzkhan/difflens.git
cd difflens
npm install
npm run build

工具

快照

截取屏幕截图并将其保存为基线。

参数类型默认值说明
urlstring必填截图URL
width数字1280视口宽度
height数字720视口高度
fullPagebooleantrue捕获完整的可滚动页面
waitForSelectorstring--捕获前要等待的CSS选择器
waitForTimeoutnumber--额外等待时间(毫秒)

检查

拍摄一张新的屏幕截图,并将其与最新基线(或特定快照)进行比较。返回结构化报告和叠加图像。

参数类型默认值说明
urlstring必填要检查的URL
baselineIdstringlatest要比较的特定快照ID
width数字1280视口宽度
height数字720视口高度
fullPagebooleantrue捕获完整的可滚动页面
waitForSelectorstring--要等待的CSS选择器
waitForTimeoutnumber--额外等待时间(毫秒)

报告包括:

  • 状态: no_changes, minor (\10%)
  • 百分比已更改:精确的像素变化百分比
  • 区域:带有位置描述和像素数的更改区域列表
  • 覆盖图像:带注释的复合显示了更改的内容

检查响应

在多个视口宽度下运行视觉差异,以捕捉响应式设计回归。

参数类型默认值说明
urlstring必填要检查的URL
widthsnumber\[\]\[375、768、1024、1440\]要测试的视口宽度
height数字720视口高度
fullPagebooleantrue捕获完整的可滚动页面
waitForSelectorstring--要等待的CSS选择器
waitForTimeoutnumber--额外等待时间(毫秒)

快照元素

通过CSS选择器对特定DOM元素进行截图。内联返回图像。

参数类型默认值说明
urlstring必填包含元素的URL
selectorstring必需要捕获的CSS选择器
width数字1280视口宽度
height数字720视口高度
waitForSelectorstring--要等待的CSS选择器
waitForTimeoutnumber--额外等待时间(毫秒)

list_snapshots

列出具有可选筛选功能的存储快照。

参数类型默认值说明
urlstring--按URL筛选
limitnumber20最大结果

清理

按年龄或计数删除旧快照。

参数类型默认值说明
maxAgeHoursnumber--删除早于此的快照
maxCountnumber--最多保留这么多(最新的优先)
dryRunbooleanfalse预览而不删除

自动工作流

DiffLens包括 CLAUDE.md 文件和Claude Code挂钩,使视觉验证完全自动化。你不需要提到DiffLens——Claude自己就这么做了:

You:    Move the login button to the right side of the header
Agent:  [calls snapshot on localhost:3000 — saves baseline]
        [edits header CSS]
        [calls check — compares before/after]

        Done. Moved the login button to the right side of the header.
        Visual check confirmed: only the button position changed,
        no unintended layout shifts or regressions.

如果Claude检测到差异中的意外变化,它会自动修复这些变化并重新检查,直到结果干净为止。

引擎盖下的工作原理

  1. CLAUDE.md 指示Claude始终在UI编辑之前进行快照,并在编辑之后进行检查
  2. 克劳德代码挂钩 每次文件编辑时触发——如果文件是UI文件(.html、.css、.jsx、.tsx、.vue、.svelte、.scs),它们会提醒Claude进行快照/检查
  3. Claude阅读差异报告,修复任何回归,只有在验证了视觉输出后才会做出响应

手动使用

您还可以明确地使用DiffLens:

You:    Take a snapshot of http://localhost:3000
Agent:  [calls snapshot] Saved baseline abc123

You:    Check localhost:3000 for visual changes
Agent:  [calls check] 4.2% pixels changed — 2 regions detected
        [shows overlay image]

存储

所有数据都存储在本地 .difflens/:

  • .difflens/snapshots/ --PNG截图+JSON元数据
  • .difflens/diffs/ --差分图像和叠加合成

添加 .difflens/ 到你的 .gitignore.

实现细节

  • 浏览器重用剧作家Chromium推出一次并保持活力。每个屏幕截图都会创建一个独立的 BrowserContext (约200毫秒,而新浏览器约3秒)。
  • 确定性捕捉:在页面JS运行之前注入反动画CSS。动画、过渡和插入符号闪烁被禁用。时区锁定为UTC,区域设置为en-US。
  • 区域聚类:更改的像素被分组到10x10px的网格中,然后在50px的范围内合并附近的单元格。这将原始像素噪声转化为有意义的“标题更改”区域。
  • 原子写入:快照将写入 .tmp 然后重命名文件,防止并发访问造成损坏。
  • stdio安全:所有日志记录都会进入stderr。stdout保留用于MCP协议消息。

技术栈

许可证

麻省理工学院

目录标签

目录标签

开发工具TypeScriptClaudeUI测试本地部署视觉回归自动化测试前端开发

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP