网站逆向工程检视指南:基于 AI 编码 Agent 的像素级克隆五阶段实战
2026/9/10 2:34:12 网站建设 项目流程

网站逆向工程检视指南:基于 AI 编码 Agent 的像素级克隆五阶段实战

【免费下载链接】ai-website-cloner-templateClone any website with one command using AI coding agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai-website-cloner-template

本篇文章基于 ai-website-cloner-template 仓库中的 .amazonq/rules/project.md(及其源头 AGENTS.md)编写,系统讲解如何借助 Chrome MCP 或浏览器 DevTools,对任意目标网站完成视觉审计、组件盘点、布局架构、技术栈分析与文档沉淀,并联动 .amazonq/cli-agents/clone-website.json 中的克隆工作流,将检视成果直接转化为可构建的 Next.js 代码。读完本文,你将掌握一套可复用的"检视 → 规格化 → 并行构建 → 视觉 QA"方法论,能把任意网站逆向还原为高质量的前端工程。


一、模板定位:一条命令开启网站克隆

ai-website-cloner-template 是一个专门用于"用 AI 编码 Agent 把任意网站逆向工程为干净、现代的 Next.js 代码库"的可复用模板。它的核心理念是:基础工程预先搭好,你只需运行/clone-website <url1> [<url2> ...],即可让 Agent 团队完成整站的像素级复刻。

从 .amazonq/rules/project.md 可以看到该模板的技术底座:

层面选型
框架Next.js 16(App Router、React 19、TypeScript strict)
UIshadcn/ui(Radix 风格原语 + Tailwind CSS v4 +cn()工具函数)
图标Lucide React(默认,后续会被提取的 SVG 替换/补充)
样式Tailwind CSS v4,配合 oklch 设计令牌
部署Vercel

在 package.json 中可以看到与文档一致的依赖版本:next@16.3.0react@19.2.4tailwindcss@^4shadcn@^4.1.0,并声明了engines.node >= 24。仓库还预置了如下工程命令:

  • npm run dev— 启动开发服务器
  • npm run build— 生产构建
  • npm run lint— ESLint 检查
  • npm run typecheck— TypeScript 检查
  • npm run check— 依次执行 lint + typecheck + build 全量校验

代码风格方面,模板强制 TypeScript strict 模式(不允许any)、命名导出、组件 PascalCase、工具函数 camelCase、纯 Tailwind 工具类(不使用内联样式)、2 空格缩进,并采用 mobile-first 响应式。这些约定会通过后续的规则同步机制注入到所有主流 AI 编码 Agent 的上下文中,保证克隆产物的代码风格始终一致。

二、检视方法论总览:克隆前的"现场勘查"

模板文档中明确指出,逆向工程任何网站,本质上是在回答一个问题:这个页面到底由什么构成、如何表现、如何响应交互。检视阶段的目标产出,是让后续的 Agent 构建者"零猜测"地完成复刻——任何靠猜的颜色、字号、间距,都意味着克隆失败。

整套方法论分五个阶段推进:

  1. Phase 1 视觉审计(Visual Audit)— 截图与设计令牌提取
  2. Phase 2 组件盘点(Component Inventory)— 逐组件记录结构与状态
  3. Phase 3 布局架构(Layout Architecture)— 网格、断点、层级
  4. Phase 4 技术栈分析(Technical Stack Analysis)— 识别对方用什么技术
  5. Phase 5 文档沉淀(Documentation Output)— 写入docs/research/作为构建依据

检视工具以Chrome MCP浏览器 DevTools为主。需要特别说明的是,检视并非一次性的"看完再写",而是与构建并行推进的流水线:Agent 每检视完一个区块,就立即把规格写入文件并交给专职构建 Agent,边提取边构建。

三、Phase 1 视觉审计:把"看得见的美"变成数据

视觉审计是第一道关卡,目标是穷尽目标网站在静态层面的一切视觉特征。

3.1 截图清单

针对目标网站的每一个不同的页面,需要在桌面、平板、移动三种视口下分别截图,并额外覆盖:

  • 深色模式变体(若适用)与浅色模式变体
  • 关键交互状态(hover、active、打开的菜单、弹窗)
  • 加载/骨架屏状态(loading/skeleton states)
  • 空状态(empty states)与错误状态(error states)

这些截图会被存放到docs/design-references/目录,作为后续构建 Agent 的"master reference"(主参考),并且会在最终视觉 QA 阶段与克隆产物做逐区对比。

3.2 设计令牌提取清单

设计令牌(Design Tokens)是克隆的"颜料盘",需要系统化提取以下类别:

  • 颜色(Colors)— 背景、文本(primary/secondary/muted)、强调色(accent)、边框、hover、错误、成功、警告
  • 排版(Typography)— 字体族、字号(h1–h6、正文、caption、label)、字重、行高、字间距
  • 间距(Spacing)— padding/margin 规律,注意寻找类似 4px、8px、12px、16px、24px、32px 的递增刻度
  • 圆角(Border radius)— 按钮、卡片、头像、输入框各自的圆角
  • 阴影/层级(Shadows/elevation)— 卡片阴影、下拉阴影、弹窗遮罩
  • 断点(Breakpoints)— 用 DevTools 响应式模式观察布局在什么宽度发生切换
  • 图标(Icons)— 用了哪个图标库、是否是自定义 SVG、尺寸规格
  • 头像(Avatars)— 尺寸、形状、加载失败的回退行为
  • 按钮(Buttons)— 全部变体(primary、secondary、ghost、纯图标、danger)
  • 输入框(Inputs)— 文本框、文本域、下拉、复选框、开关

这些令牌最终会合并进 src/app/globals.css,并映射到 shadcn 的令牌命名(background、foreground、primary、muted 等)。从仓库已存在的 src/components/ui/button.tsx 可以看到这套令牌体系的实际用法——按钮组件通过 class-variance-authority 定义default/outline/secondary/ghost/destructive/link六种变体和default/xs/sm/lg/icon/icon-xs/icon-sm/icon-lg多种尺寸,全部引用bg-primarytext-primary-foregroundborder-ring这类语义令牌,克隆时把目标站颜色映射进同名令牌即可全局生效。

四、Phase 2 组件盘点:让每个组件都有"身份证"

视觉审计回答"长什么样",组件盘点则回答"由什么构成、有哪些状态、怎么响应"。

4.1 每个组件的七要素档案

对每一个独立 UI 组件,必须记录:

  1. 名称(Name)— 你如何称呼这个组件
  2. 结构(Structure)— 包含哪些 HTML 元素 / 子组件
  3. 变体(Variants)— 是否有不同的尺寸、颜色或状态
  4. 状态(States)— 默认、hover、active、disabled、loading、error、empty
  5. 响应式行为(Responsive behavior)— 在不同断点下如何变化
  6. 交互(Interactions)— 点击、hover、聚焦、键盘导航
  7. 动画(Animations)— 过渡、进入/退出动画、微交互

4.2 需要重点关注的常见组件类型

文档给出了一个"常见组件雷达图",覆盖几乎所有现代网站会出现的模式:

  • 导航(顶栏、侧边栏、底部栏)
  • 卡片 / 列表项
  • 按钮和链接
  • 表单和输入
  • 弹窗和对话框(Modals/dialogs)
  • 下拉和菜单(Dropdowns/menus)
  • 标签页和分段控件(Tabs/segmented controls)
  • 头像和用户徽章
  • 加载骨架屏
  • Toast 通知
  • 工具提示和气泡(Tooltips/popovers)

从源码结构看,克隆产物中的组件会落在 src/components/ui(shadcn 原语)与src/components/sites/<site-key>/<page-key>/(按站点与页面命名的克隆组件命名空间)两个层次中,后者即组件盘点档案的直接落地位置。

五、Phase 3 布局架构:把握页面"骨架"

布局决定了克隆产物的页面装配方式,检视时需要逐项确认:

  • 网格系统(Grid system)— 用的是 CSS Grid、Flexbox 还是固定宽度?
  • 列布局(Column layout)— 每个断点下有几列?
  • 最大宽度(Max-width)— 主内容区的最大宽度是多少?
  • 吸顶元素(Sticky elements)— header、侧边栏、悬浮按钮
  • Z-index 层级(Z-index layers)— 导航、弹窗、提示、遮罩之间的层叠关系
  • 滚动行为(Scroll behavior)— 无限滚动、分页还是虚拟滚动?

这些信息会汇入页面拓扑文档(PAGE_TOPOLOGY),作为克隆阶段的"装配蓝图"——决定哪些区块是固定/吸顶覆盖层、哪些是流式内容、区块之间的依赖关系(例如悬浮导航覆盖全部内容)以及每个区块的交互模型(静态 / 点击驱动 / 滚动驱动 / 时间驱动)。

六、Phase 4 技术栈分析:识别对方的技术指纹

克隆不是从零发明,而是"以对方的技术换取等价实现",因此必须准确识别目标站的技术栈:

  • 框架(Framework)— React、Vue 还是 Angular?可通过__NEXT_DATA____NUXT__ng-version等指纹判断
  • CSS 方案— Tailwind(工具类)、CSS Modules、Styled Components、Emotion 还是原生 CSS
  • 状态管理(State management)— Redux(查 DevTools)、React Query、Zustand、Pinia
  • API 模式— REST 还是 GraphQL(在网络面板中查找/graphql请求)
  • 字体加载(Font loading)— Google Fonts、自托管还是系统字体
  • 图片策略(Image strategy)— CDN、懒加载、srcset、WebP/AVIF
  • 动画库(Animation library)— Framer Motion、GSAP,还是仅 CSS 过渡

分析结果会写入TECH_STACK_ANALYSIS.md,并给出"对方用什么、我们选择什么等价方案"的对照结论,为后续构建确定技术路径。

七、Phase 5 文档沉淀:把检视成果固化到 docs/research

检视完成后,必须在docs/research/目录下产出五份标准文档,它们是后续构建 Agent 的契约与审计依据:

  1. DESIGN_TOKENS.md— 提取到的全部颜色、排版、间距令牌
  2. COMPONENT_INVENTORY.md— 每个组件的结构笔记
  3. LAYOUT_ARCHITECTURE.md— 页面布局、网格系统、响应式行为
  4. INTERACTION_PATTERNS.md— 动画、过渡、hover 状态
  5. TECH_STACK_ANALYSIS.md— 目标站技术栈及我们选择的等价方案

这些文件被 scripts/sync-skills.mjs 生成的 Amazon Q Agent 定义(.amazonq/cli-agents/clone-website.json)通过fileContext: ["AGENTS.md", "docs/research/**"]纳入上下文,确保克隆 Agent 在构建时始终能读到这些检视成果。

八、从检视到克隆:规格文件驱动的并行构建

检视阶段与克隆阶段并非割裂。在 .amazonq/cli-agents/clone-website.json 定义的clone-website技能中,检视产出的每个区块规格(spec file)会以内联方式直接注入构建 Agent 的提示词——"不要把参考文档写进构建者提示词里"是明确的纪律,构建 Agent 应当零外部依赖、零猜测地拿到全部信息。

这一工作流的核心原则包括:

  • 完整性优先于速度(Completeness Beats Speed):每个构建 Agent 必须拿到截图、精确 CSS 值、本地化的资源路径、真实文本、组件结构;任何需要猜测的地方都是提取失败。
  • 小任务、完美结果(Small Tasks, Perfect Results):单个构建提示词若超过约 150 行规格内容,说明该区块过于复杂,必须拆分。典型做法是:简单区块(1–2 个子组件)交给一个 Agent;复杂区块(3 个以上独立子组件)按"每个子组件一个 Agent + 一个区块包装 Agent"拆分。
  • 真实内容与真实资源(Real Content, Real Assets):用element.textContent提取真实文本,下载每一个<img><video>,把内联<svg>提取为 React 组件。特别要警惕分层资源——一个看起来是单张图片的区块往往是"背景水彩/渐变 + 前景 UI 截图 + 覆盖图标"的多层组合,漏掉覆盖层会让克隆看起来空洞。
  • 先建地基(Foundation First):全局 CSS(含目标站设计令牌)、内容结构的 TypeScript 类型、全局资源(字体、favicon)必须先顺序完成,之后的全部工作才能并行。
  • 既提取外观,也提取行为:网站不是截图,是活物。对每个元素既要提取getComputedStyle()的精确计算样式,也要记录触发变化的机制(滚动位置、IntersectionObserver 阈值、视口交叉)、前后两套 CSS 值以及过渡(时长、缓动、CSS transition 还是 JS 驱动)。

8.1 交互模型的判定是最高价值的前置决策

克隆中最昂贵的错误是把滚动驱动的界面做成点击驱动(或反之)——这会导致整段重写而非 CSS 微调。文档给出了判定顺序:

  1. 先别点击,缓慢滚动页面,观察元素是否随滚动自行变化;
  2. 若有变化则为滚动驱动,需提取机制:IntersectionObserverscroll-snapposition: stickyanimation-timeline或 JS 滚动监听;
  3. 滚动无变化时,再点击/hover 测试点击驱动或悬停驱动的交互;
  4. 在组件规格中显式声明交互模型,例如"INTERACTION MODEL: scroll-driven with IntersectionObserver"。

需要留意的行为类型还包括:滚动超过阈值后收缩/变色/加阴影的导航栏、进入视口时上浮/滑入/错峰延迟的入场动画、scroll-snap-type的滚动吸附、视差层、自动轮播、页区间明暗主题过渡、滚动驱动的进度指示器,以及 Lenis、Locomotive Scroll 这类平滑滚动库(可通过.lenis类或滚动容器包裹结构识别)。

8.2 全状态提取与双重状态对比

很多组件在页面加载时只呈现默认状态,检视者必须主动触发并记录每一个状态

  • 对标签页内容:逐个点击每个 tab,分别提取每个状态下的内容、图片与卡片数据,并记录状态间的过渡动画;
  • 对滚动相关元素:在滚动位置 0 捕获一套计算样式,越过触发阈值后再捕获一套,diff 出具体变化的 CSS 属性,并记录精确触发阈值(像素滚动位置或视口交叉比例)与过渡 CSS。

九、工程质量护栏:多 Agent 协作的规则与同步机制

.amazonq/rules/project.md 明确记录了多 Agent 协作与配置同步的两条铁律:

9.1 Worktree 分支并行

当启动 Claude Code Agent 团队时,每个成员必须工作在各自的 worktree 分支上,最后由编排者(orchestrator)合并所有成果并智能解决冲突。编排者拥有全局上下文(目标、已完成工作、期望结果),负责路由分配与合并裁决。每个构建 Agent 结束前必须通过npx tsc --noEmit校验;合并后由编排者执行npm run build验证构建不破。

9.2 配置单一来源与同步脚本

  • 编辑 AGENTS.md 后,运行bash scripts/sync-agent-rules.sh重新生成各平台的规则文件。从 scripts/sync-agent-rules.sh 的实现可见:脚本以AGENTS.md为唯一事实源,解析其@file导入语法(如@docs/research/INSPECTION_GUIDE.md)内联进内容,然后批量写入 GitHub Copilot(.github/copilot-instructions.md)、Cline/Roo(.clinerules)、Continue(.continue/rules/project.md)以及 Amazon Q(.amazonq/rules/project.md,即本文所依据的文件)等平台;无需生成文件的 Codex CLI、OpenCode、Cursor、Windsurf 等则原生读取AGENTS.md,Claude Code 与 Gemini CLI 通过 CLAUDE.md、GEMINI.md 的@AGENTS.md导入指针引用。
  • 编辑.claude/skills/clone-website/SKILL.md后,运行node scripts/sync-skills.mjs重新生成全部平台的技能文件。从 scripts/sync-skills.mjs 的实现可见,脚本会为 13 个平台生成格式各异的技能/命令文件:Codex、GitHub Copilot、Kiro 直接复制同一 SKILL.md;Cline/Roo 转为标准 Agent Skill;Cursor/Windsurf 转纯 Markdown 并替换$ARGUMENTS占位符;Gemini CLI 生成 TOML 格式并将$ARGUMENTS替换为{{args}};Amazon Q 生成带fileContext的 JSON Agent 定义(.amazonq/cli-agents/clone-website.json)。

这一"单一来源 + 脚本同步"机制保证了不同 AI 平台拿到的规则完全一致,也解释了为什么.amazonq/rules/project.md顶部标注 "AUTO-GENERATED from AGENTS.md — do not edit directly":它是 AGENTS.md 的派生产物,人工应编辑源头而非生成文件。

十、检视清单速查:动手前的自检

结合 docs/research/INSPECTION_GUIDE.md(被 AGENTS.md 以@导入,是检视指南的完整版),派遣任何构建 Agent 之前应确认:

  • 组件规格文件已写入docs/research/<site-key>/<page-key>/components/<name>.spec.md且所有章节填写完整
  • 规格中每个 CSS 值均来自getComputedStyle(),而非估算
  • 交互模型已识别并记录(静态 / 点击 / 滚动 / 时间)
  • 有状态组件:每个状态的内容与样式均已捕获
  • 滚动驱动组件:触发阈值、前后样式、过渡均已记录
  • hover 状态:前后值与过渡时长均已记录
  • 区块内所有图片均已识别(含覆盖层与分层组合)
  • 至少桌面与移动两个视口的响应式行为已记录
  • 文本内容与目标站逐字一致,而非改写
  • 构建提示词不超过约 150 行规格;超限则拆分区块

完成构建后,还应通过视觉 QA 对比收尾:将原站与克隆产物在桌面(1440px)与移动(390px)视口下逐区对照截图;发现差异时先核对规格文件——规格错了就回浏览器重新提取并修正规格,规格对了但构建错了则修正组件;最后完整测试滚动、点击、hover 等全部交互行为。只有通过这轮逐像素 QA,克隆才算真正完成。

结语

从 .amazonq/rules/project.md 的完整脉络可以看到,网站逆向克隆的本质是一场"精确提取 + 规格化转译 + 并行构建"的工程流水线:五阶段检视保证信息不失真,spec 文件保证构建零猜测,worktree 分支与同步脚本保证多 Agent 协作不失控,视觉 QA 保证最终产物经得起逐像素对比。这套方法论不依赖特定网站类型,任何基于浏览器的页面都能套用同一流程完成高质量复刻。

【免费下载链接】ai-website-cloner-templateClone any website with one command using AI coding agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai-website-cloner-template

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询