Communitygithub.com

HuanEnzie/agent-build-effect

为任何网页添加“30个AI代理正在构建网站”的视觉效果——30个带名字(layout-07, copy-12...)的彩色光标飞入,每个区块隐藏在虚线线框后,最近的光标拖拽带有手柄和标签(h1.hero-title)的选择框,区块在选择框内出现;下方内容随滚动构建;状态栏显示“30 agent · N edits · Skip”。纯JS,无库依赖,包含React/Next包装器。适用于用户想要“AI代理编辑页面效果”、“页面自动构建”、“光标”的场景。

agent-build-effect 是什么?

AgentBuild 是一个纯前端 JavaScript 库,能为任何网页添加令人惊叹的“AI 代理正在协作构建页面”的视觉特效。当页面加载时,区块会隐藏在虚线线框中,30 个带有随机名称(如 layout-07、copy-12)的彩色光标会飞入,拖拽选择框并“构建”出对应的内容区块,同时底部会有一个简洁的状态栏显示构建进度。该特效完全基于 DOM 和 CSS Transition 实现,不依赖任何 canvas 或外部库,性能极佳,30 个光标的资源消耗几乎可以忽略不计。AgentBuild 支持通过 `<script>` 标签直接嵌入传统 HTML 项目,也提供了 React/Next.js 组件(客户端组件)供现代框架使用。它还提供了丰富的配置选项,可以自定义光标数量、颜色、目标选择器、状态栏文案、滚动行为等,并智能地支持 `prefers-reduced-motion` 用户偏好。此外,库还提供了 Playwright 测试辅助方法,方便开发者验证特效的正确性。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/HuanEnzie/ai-agent-portfolio-skills/tree/HEAD/skills/agent-build-effect

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

AgentBuild: 30个AI代理在观众面前构建页面

进入页面特效:页面的每个区块都隐藏在线框之后,一群带名字的光标飞来,拖拽选择框并“构建”出该区块。仅使用 DOM 和 CSS transition(无 canvas,无库),30个光标的资源消耗几乎为零。

assets/ 中的文件:

文件使用场景
agent-build.js核心。可通过 <script> 使用(创建 window.AgentBuild)或通过打包工具 import(CommonJS)。
agent-build.css必选,与核心配套。通过 --ab-* 变量更改颜色。
agent-build.d.ts核心的 TypeScript 类型定义。
AgentBuild.tsxReact/Next 包装器(客户端组件)。
demo.html可直接在浏览器中打开的示例页面。

如何集成

常规 HTML 网页

  1. 将 agent-build.js 和 agent-build.css 复制到项目中。
  2. 在 <head> 中引入 CSS,在 </body> 之前引入脚本,然后在 DOM 内容已就绪后 调用 start:
<link rel="stylesheet" href="agent-build.css" />
<script src="agent-build.js"></script>
<script>
  AgentBuild.start({
    root: "main",                       // 要构建的区域;光标层位于此区域内
    targets: "main h1, main p, .card",  // 各个区块,按优先级排序
    seenKey: "home",                    // 每个页面一个键
    labels: { status: "{agents} agent · {edits} edits", building: "Building page", done: "Page built", skip: "Skip" },
  });
</script>

React / Next.js(App Router)

  1. 将 agent-build.js、agent-build.d.ts、AgentBuild.tsx 复制到同一目录,例如 src/components/agent-build/。
  2. 在全局样式表中引入 agent-build.css 一次(@import "../components/agent-build/agent-build.css";)。
  3. 将组件作为需要构建区域的 第一个子元素。组件会将父元素作为 root:
<div className="landing">
  <AgentBuild targets=".landing h1, .landing p, .card" seenKey="landing" />
  ...
</div>

服务端渲染的页面仍可正常工作,因为组件仅在客户端运行,并在 useLayoutEffect(首次绘制之前)中隐藏区块,因此不会出现内容闪烁。

正确选择 targets

这是决定效果好坏的关键。

  • 选择有意义的区块:标题、段落、按钮、卡片、图片。不要选择包裹整个部分的 div,因为巨大的线框看起来像是个 bug。
  • 按优先级顺序列出。位于已选中元素内部的元素会被自动忽略。例如,如果选择了 .card,则卡片内的 p 不会被单独构建。如果想同时构建卡片及其内部元素,请将 .card 放在 p 之前。
  • 使用 skipInside: ".tagline" 跳过已有独立特效(如滚动文本动画、canvas)的区域。
  • 初始宽度或高度为零的元素会被跳过。
  • 大约 30 到 140 个区块效果最佳。maxTargets 默认为 140。
  • 如果项目已有“滚动渐显”效果,请在代理运行时将其关闭,否则两个效果会叠加。例如:[data-agent-build] .reveal { opacity: 1; transform: none; transition: none; }(data-agent-build 属性在运行时会被添加到 root 元素上)。

配置选项

选项默认值含义
rootdocument.body元素或选择器。运行期间会被设置为 position: relative。
targetsh1, h2, h3, p, img, figure, li, button, .card区块列表。
count30(屏幕宽度小于640px时为16)代理数量。
once / seenKeytrue / "agent-build"每个标签页只运行一次。
forceParam"agents"在 URL 后添加 ?agents 可强制重新运行,方便录制视频。
respectReducedMotiontrue如果用户开启了减少动效,则不运行。
pilltrue状态栏显示“跳过”按钮。
labels英文status(包含 {agents}、{edits})、building、done、skip。
colors、roles8种颜色、10种角色代理的颜色和名称(layout-07)。

start() 返回 { skip(), destroy(), started }。destroy() 将页面恢复到初始状态。在离开页面(SPA)或卸载组件时调用它。

通过 CSS 变量修改外观:--ab-wire(线框颜色)、--ab-pill-bg、--ab-pill-text、--ab-pill-muted、--ab-mono、--ab-ease。

以数值方式测试,无需持续截图

使用 Playwright 打开带有 ?agents 的页面,然后读取:

({
  cursors: document.querySelectorAll(".ab-cursor:not([data-hidden])").length, // 初始约30
  waiting: document.querySelectorAll('[data-ab="wait"]').length,              // 随滚动逐渐减少
  on: !!document.querySelector("[data-agent-build]"),                          // 完成后为 false
})

使用 window.scrollTo 按步骤滚动(如果页面有 Lenis 平滑滚动,请不要使用 mouse.wheel),等待几秒钟。正确结果:waiting 变为 0,on 变为 false。测试“跳过”按钮:点击 .ab-skip,然后不再有任何 [data-ab]。仅在需要评估视觉效果时拍摄一张截图。

已知问题

  • 线框或光标位置偏移:root 未包含所有区块。请选择包含所有 targets 的元素作为 root。
  • fill 图片(Next/Image)覆盖整个页面:这并非本技能的错误。fill 图片的父容器需要设置 position: relative。
  • 效果不重新运行:已在当前标签页运行过一次。在 URL 后添加 ?agents 或打开新标签页。
  • React StrictMode(开发模式下 effect 运行两次):核心会在 1.2 秒后标记“已运行”,因此第二次挂载仍会正常运行。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能