用 Chrome DevTools MCP 给 AI 写的页面做“质检“

背景:

我在做一个校园美食评价社区的 H5 项目。设计流程是这样的:产品需求和设计稿定好之后, Gemini 负责具体页面的设计,跑通之后再交给我 review 页面是否有问题。

这个事并不复杂,但是,让我一条条对着 spec 去检查,既费时间,又容易遗漏。

问题不在难,而在琐碎。我想把这种重复的事交给 agent 去做。

于是,我用Claude Code 建了一个 审查 Agent 专门用于进行重复的审查工作。下面想分享一下我的做法。


工具:Chrome DevTools MCP

MCP(Model Context Protocol)你可能已经听说过。简单来说,它是一套标准协议,让 AI 能通过工具调用去操作外部系统。

Chrome DevTools MCP 是 Chrome DevTools 官方维护的一个 MCP server,做的事情是:把一个受控的 Chrome 实例的能力暴露给 AI------截图、读取 accessibility snapshot、执行 JavaScript(拿 computed style)、抓控制台与网络请求、模拟移动端视口、点击和输入......

这一点很关键。"代码写对了"和"页面长对了"是两回事:

  • AI 审查源代码 ,只能发现逻辑层面的问题(API 用错了、props 漏传、状态机分支没覆盖)。
  • AI 审查渲染结果 ,才能发现视觉层面的偏差(间距错了 2px、token 用成了 hover 态、移动端视口下溢出、aria 标签缺失)。

只有后者贴着 ui 设计稿 去比对,才算真正的"还原度审查"。


配置:在项目里启用 chrome-devtools MCP

如果你已经配置过,可以跳过这部分。

和大多数 MCP server 一样,chrome-devtools-mcp 通过 npx 拉起,不需要装任何 Chrome 浏览器扩展------它会用 Puppeteer 自己启动一个受控的 Chrome 实例。

Claude Code(仓库内集成) :在项目根目录写一个 .mcp.json

json 复制代码
{
  "mcpServers": {
    "chrome-devtools": {
      "type": "stdio",
      "command": "npx",
      "args": ["chrome-devtools-mcp@latest"]
    }
  }
}

Claude Code 会自动加载这个文件。这样配的好处是:MCP 配置跟着仓库走,团队里所有人 clone 下来就能用。

Claude Desktop :在 claude_desktop_config.json 里加同样的 mcpServers 配置即可。

重启 Claude,工具列表里能看到 mcp__chrome-devtools__take_screenshot / take_snapshot / evaluate_script / emulate 等一系列工具,就说明 MCP server 已经接好了。第一次运行 npx 会拉镜像并启动 Chrome,稍微等一下。


工作流设计:让审查 subagent 动起来

我把审查工作流设计成这样:
启动
审查 subagent · ui-spec-reviewer
① 读 设计稿 + 参考图
② navigate_page · 打开页面
③ emulate · 切到移动端视口
④ take_screenshot · 截图
⑤ take_snapshot · 读 DOM 树
⑥ evaluate_script · 取 computed style / 实测尺寸
⑦ list_console_messages · 抓控制台报错
⑧ 与 设计稿 对比 → 输出结构化 gap list
主 agent(任务调度)

它的定位很专一:只读、不改代码、只输出结构化的差异清单。调用的时候传入模块名,它会自己去找对应的 ui-spec.mdimages/,然后通过 chrome-devtools MCP 去访问本地预览,逐项比对

它返回的东西大概是这样一份 清单:

  • 缺失的状态(loading / empty / error / login / report / delete 这些 ui-spec 里列出但代码里没实现的)
  • 文案不一致(按钮、提示、空态描述对不上 spec)
  • 布局偏差(间距、对齐、断行)
  • token 误用(写了硬编码 hex 而不是 sy-* 变量;用了 hover 态颜色作为默认态)

而做成 subagent 除了方便以外有一个好处,在审查时会产生很多截图和 DOM dump,而独立上下文能避免把主 agent 的"脑子"塞满。


实际效果

修改前

能明显看出来的问题:

  1. 底部导航与详情页互动栏重叠
  2. 图片引用无效,详情页会出现 404 或占位
  3. 图标使用 emoji 未使用组件库图标
    ...

ui-spec-reviewer 跑完之后,把它们整理成了一份清单,对照修复就行。

修改后

按这份清单修改过之后:不仅达到了想要的效果,同时顺手补了代码里漏掉的几个状态(评论空态、举报弹层)。


MCP 在这里真正解决了什么?

有一个值得细说的点:Chrome DevTools MCP 的核心价值是"看见渲染结果",而不是"读代码"。

以"标签样式较弱"这个问题为例------如果只看源码,<Tag> 组件存在、className 也写了、ui-spec 里"浅粉色 chips"的描述也对得上,乍看代码是正常的。但实际渲染时,因为某条全局样式 / antd-mobile 默认样式把 background-color 覆盖成了透明,chip 的视觉效果就消失了。

这种"代码看着没问题、页面看着不对"的情况,在代码层面很难一眼发现。但 MCP 让 Claude 直接读取了元素的 computed style,实际值是 rgba(0,0,0,0),问题立刻浮出水面。

这就是"能读代码的 AI"和"能看页面的 AI"之间的本质区别。


小结

这套流程跑通之后,一个页面从"AI 写完"到"还原度 OK"之间的来回,明显短了一截。我不再需要一条条文档对着页面看,把这种琐碎活转给 ui-spec-reviewer + chrome-devtools MCP 就行,自己只看它输出的清单决定哪些要修。

Chrome DevTools MCP 是我目前用过的 MCP 里比较实用的,推荐使用Claude Code辅助开发的朋友都可以尝试一下------只要你有一份认真写过的设计稿,它就能帮你把"还原度"这件事自动化掉一大半。

如果你也在用类似的工作流,欢迎在评论区分享你的经验。

相关推荐
Hilaku1 小时前
从搜索排名到 AI 回答? 先聊一聊 AI 可见度工具 BuildSOM !
前端·javascript·程序员
zzmgc41 小时前
纯静态 + Web Worker + 虚拟滚动:我是怎么让浏览器吃下 10MB JSON 不卡的
前端·架构
乌托邦1 小时前
uni-mini-ci:让 uniapp 小程序构建后自动预览和上传
前端·vue.js·uni-app
果汁华1 小时前
Agent 与 Skill 的使用边界
人工智能
天上路人1 小时前
采用AI 神经网络降噪技术降噪模组A-59F如何区分“人声”与“环境噪声”?
人工智能·语音识别
啵啵肠1 小时前
给 AI Agent 一把求职 CLI:推荐一个面向 BOSS 直聘工作流的开源项目 boss-agent-cli
人工智能·github
豹哥学前端1 小时前
前端工程化实战:从包管理到 Vite 配置,一套下来全明白
前端·javascript·vite
小新同学^O^1 小时前
简单学习 --> 模型微调
开发语言·人工智能·python·模型微淘
网安小白1 小时前
如果解决github域名解析问题
前端