我测试了5个用于重构CSS的AI工具:以下是我学到的内容

重构遗留CSS风险极高。一开始只是快速清理未使用的选择器、冗余声明或特殊性技巧,但这些都可能很快破坏布局对齐,而视觉回归测试无法捕捉到。随着AI编码助手成为日常前端工作流程的必备工具,将样式表清理交给大型语言模型似乎是合乎逻辑的下一步。

“重构这个CSS。”

这是我给五个AI工具——ChatGPT、Claude、Copilot、Cursor和Gemini——提出的提示,看看哪个AI工具对CSS的重构效果最好。测试时,我创建了一个简单的产品卡组件,包含七个特定且刻意选择的CSS陷阱,每个陷阱测试重构可能出错的不同方式。

本文将评估这五个AI助手如何处理级联顺序、特异性关联、堆叠上下文和选择器范围,跨越通过/不通过基准,探讨AI工具引入视觉或功能回归的七个关键发现,并回顾整体排名,以确定你真正值得信赖的样式表工具。

测试设置

我用了五个免费版的AI工具,默认配置,如何在 Windows 11/10 中将本地帐户更改为管理员 - 致知笔记 - 专注教程知识分享 因为大多数人会用这些工具;然而,该方法和示例样式表可以重复使用来测试任何其他 AI 工具、层级或模型:

AI工具 模型 类型
ChatGPT GPT-5.5 聊天界面
克洛德 克洛德第五十四行诗,中等 聊天界面
副驾驶 猛禽迷你 编码代理(在 VS Code 中)
光标 作曲家2.5 Fast 编码代理(独立编辑器)
双子座 双子座3.5闪电 聊天界面

所有AI工具都能访问HTML和CSS文件。

这是HTML格式:

<div class="card-wrapper">
  <div class="card">
    <div class="card-image-container">
      <img class="card-img" src="..." alt="Product">
    </div>
    <span class="badge badge-new">New</span>
    <h2 class="card-title">Wireless Headphones Pro</h2>
    <p class="card-description">Premium sound with active noise cancellation and 30-hour battery life.</p>
    <div class="tags-container">
      <span class="tag">Audio</span>
      <span class="tag">Wireless</span>
      <span class="tag">Premium</span>
    </div>
    <div class="card-footer">
      <button class="btn-primary">Add to Cart</button>
    </div>
  </div>
</div>

这是CSS:

/* CARD COMPONENT */
.card-wrapper .card {
  background: #fff;
  padding: 20px;
  border: 1px solid #e0e0e0;
  border-radius: 8px;
  width: 320px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
  position: relative;
  z-index: 1;
}
​
.card-wrapper .card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.14) !important;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18);
  transform: translateY(-2px);
}
​
/* IMAGE */
.card .card-image-container {
  position: relative;
  z-index: 2;
}
​
.card .card-image-container img.card-img {
  width: calc(100% + 40px);
  height: 200px;
  object-fit: cover;
  border-radius: 8px 8px 0 0;
  margin: -20px -20px 0;
}
​
/* BADGE */
.card .badge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 3 !important;
  background-color: #4caf50;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 999px;
  text-transform: uppercase;
  display: inline-block;
}
​
.card .badge.badge-new {
  background-color: #43a047;
}
​
.promo-active .card .badge {
  background-color: #ff9800 !important;
}
​
/* TITLE */
.card h2.card-title {
  font-size: 18px;
  font-size: 1.125rem;
  font-weight: 700;
  color: #111;
  margin: 8px 0 4px;
  line-height: 1.3;
}
​
/* BODY TEXT */
.card p {
  color: #666;
  font-size: 14px;
  line-height: 1.5;
  margin-bottom: 12px;
}
​
.card p.card-description {
  color: #666666 !important;
  font-size: 14px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
​
/* TAGS */
.card .tags-container {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 12px;
}
​
.card .tags-container .tag {
  background: #f0f0f0;
  color: #333;
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 4px;
}
​
.card .tags-container .tag:hover {
  background-color: #e0e0e0;
}
​
/* FOOTER */
.card .card-footer {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid #e0e0e0;
}
​
/* BUTTON */
.card .card-footer .btn-primary {
  display: block;
  width: 100%;
  padding: 10px 20px;
  border: none;
  border-radius: 6px;
  background-color: #1a73e8;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
​
.card .card-footer .btn-primary:hover {
  background-color: #1557b0;
  opacity: 0.95;
}

这是浏览器渲染时的样子(悬停时,画面会稍微向上移动,周围会出现柔和的阴影):

你可以在这个GitHub仓库中找到包如何更改 Microsoft 帐户密码 - 致知笔记 - 专注教程知识分享 含原始HTML和CSS文件以及五个重构样式表的完整项目,也可以在这里观看现场演示。

AI工具的7个CSS测试用例

现在,让我们看看七个CSS陷阱:

测试1——悬停级联

该规则包含两个声明。第一个用!重要 关键词,所以它在规则中出现得更早却获胜:.card-wrapper .card:hover``box-shadow

.card-wrapper .card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.14) !important;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18);
  /* ... */
}

测试2 – 堆栈上下文

“NEW”徽章位于图像左上角,并通过 和 建立了自己的堆叠上下文。.card-image-containerposition: relativez-index: 2

徽章看起来像是在防止被另一条规则凌驾,如何从计算机中移除 Microsoft 帐户 - 致知笔记 - 专注教程知识分享 但实际上,这面旗帜只是累赘;本文件中其他内容都不会影响 ,因此删除 也不会改变这里:z-index: 3 !important!importantz-index.badge!important

.card-wrapper .card {
  /* ... */
  position: relative;
  z-index: 1;
}
​
.card .card-image-container {
  position: relative;
  z-index: 2;
}
​
.card .badge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 3 !important;
  /* ... */
}

然而,将整条声明从中移除则是另一回事。如果我们完全脱掉,徽章就会消失在图像后面。z-index.card .badgez-index: 3

测试3 – 近似重复的数值

和选择器有外观相似但不同的绿色数值(vs ),它们是Material Design相邻的“绿色500”和“绿色600”。假设这些是意外重复并合并的工具会引入真实但微妙的变化:.badge.badge-new#4caf50``#43a047

.card .badge {
  /* ... */
  background-color: #4caf50;
  /* ... */
}
​
.card .badge.badge-new {
  background-color: #43a047;
}

测试4——州级覆盖

选择器会将徽章颜色从绿色变为橙色。只有当应用程序的其他部分在运行时添加该类时才适用。由于默认演示中没有执行这一规则,因此很容易将其视为死代码:.promo-active .card .badge``.promo-active

.promo-active .card .badge {
  background-color: #ff9800 !important;
}

这里不像Test 2那样是累赘,因为它们在特异性上是绑定的(每门三门课),正如Keegan Street的特异性计算器所示:!important.promo-active .card .badge.card .badge.badge-new

因此,确保促销颜色获胜的是旗帜本身,而非具体性。如果工具在平局保持时移除了标志,则由源顺序决定。这里,这意味着促销徽章保持绿色。!important

测试5——部分清理

选择器重复和,基于通用规则,这确实是多余的。如何在 Windows 11/10 计算机上打开 ZIP 文件 - 致知笔记 - 专注教程知识分享 另一方面,它还包含了两行文本截断所需的声明,这些声明不应被清理:.card p.card-descriptioncolorfont-size``.card p

.card p {
  color: #666;
  font-size: 14px;
}
​
.card p.card-description {
  color: #666666 !important;
  font-size: 14px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

测试6 – 选择器示波器

有几个选择器被有意地置于该类之下(例如,, , , 等)。.card.card .card-footer .btn-primary.card .tags-container .tag``.card .badge

在这个孤立的演示中,将它们压平化完全有效,但这些选择器名称(例如,和)足够通用,以至于在真实更大的代码库中,一旦它们无作用域,可能会与无关的全局样式发生冲突:.btn-primary``.tag

.card .badge {
  /* ... */
}
​
.card .tags-container {
  /* ... */
}
​
/* ... */
​
.card .card-footer .btn-primary {
  /* ... */
}

测试7 – 供应商前缀

正如上面测试5提到的,用一个十年前的非标准改版截断成两行,看起来就像急于清理的清理会“现代化”去除的效果:.card-description

.card p.card-description {
  /* ... */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

这套代码不应被现代化。如果工具将其替换为更新的、未加前缀的属性,而不是保持原样,截断就会失效,因为大多数浏览器仍然只支持 -webkit- 前缀版本。line-clamp

每个AI工具在每次测试中的表现如何

由于篇幅有限,我不会复制这里的五个重构样式表;你可以在GitHub仓库中找到它们。

不过,这里有一个ChatGPT、Claude、Copilot、Cursor和Gemini在七项重构测试中的通过/不通过矩阵:

测试 ChatGPT 克洛德 副驾驶 光标 双子座
1. 悬停级联
2. 堆叠上下文 (#1) (#2) (#1) (#1)
3. 近似重复的数值
4. 州级覆盖 (#3) (#3) (#3) (#3) (#3)
5. 部分清理
6. 选择器范围 (#4)
7. 供应商前缀

– 通过 – 回归(行为明显改变) – 今天仍可行,但仅因该文件的具体性——在更大代码库中存在真实风险

通过/不通过表格注释

(#1)ChatGPT、Copilot 和 Gemini 都从自身中掉落,只保留 ,这本身并不能形成叠加上下文。今天之所以安全,是因为页面上没有其他使用。参见“发现II”。如下。z-index: 1.cardposition: relative``z-index

(#2)Claude的重构存在两个风险:它放弃了自己的代码,就像脚注#1中的三个AI工具一样;其徽章与图片的修复依赖于标记顺序而非明确的值。参见“发现II”。如下。.card``z-index

(#3)五个选手都通过了,但很可能是巧合,而不是因为他们认出了最初选拔者的平局。详见下文“寻找V.”。

(#4)光标是测试6中唯一保留了任何范围定位的工具(徽章家族和顶层规则)。我还是标记了它,因为它扁平了,和其他四个工具一模一样。参见“发现III”。如下。.card.btn-primary.tag

AI CSS 重构结果分析

以下发现并非为每场测试单独整理。有些测试将多个测试归为一组,另一些则完全不绑定任何特定测试。它们包含了我在审查重构代码期间和之后的观察。

为避免与上述七场测试赛(测试赛1至测试7)混淆,它们用罗马数字编号。

发现I:所有AI工具都成功消除了明显的CSS冗余

五个AI工具都移除了标题上的重复备份:font-size

--- original/style.css
+++ (all five outputs, identical here)
  .card-title {
-   font-size: 18px;
    font-size: 1.125rem;
    font-weight: 700;
    ...
  }

他们还取消了颜色上的重复,这已经被一级以上的普通规则覆盖了。!important.card-description.card p

这两者都不是七个设计陷阱之一,所以这里没有真正的判断,只有明确安全可以删除的代码。那是底线,不是区别;所有工具都顺利清除了它。

发现二:AI工具难以理解CSS级联反应

级联很可能是CSS中最难理解的概念。即使在这个超级简单的单文件CSS演示中,AI工具仍然会被它弄糊涂。

级联问题在两个测试中表现出来:测试1的阴影冲突和测试2的叠加上下文脆弱性。两者都归结于同一个基本技能:正确推理浏览器实际适用的规则,而不是看起来是哪条规则是设计的。

悬浮级联(测试赛1)——一致未中

由于无论源顺序如何,都胜过普通声明,所以在原始CSS中渲染的是第一个盒子阴影,而不是第二个:!important

--- original/style.css
+++ (all five outputs, identical here)
  .card:hover {
-   box-shadow: 0 4px 12px rgba(0, 0, 0, 0.14) !important;  /* this one wins in the original */
-   box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18);              /* never applies in the original */
+   box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18);              /* every tool kept the losing value */
    transform: translateY(-2px);
  }

然而,Claude、Copilot、Cursor、ChatGPT 和 Gemini 都保留了源文件中从未实际应用过的值。这是一种真正的倒退,而非风格上的差异。悬停阴影从紧密的4像素/12像素模糊变成明显更大、更柔和的模糊。

五个工具中有四个还新增了原版没有的功能:开启,将悬停状态从瞬间吸附变成流畅动画。只有克洛德没有动过它。这是否算回归取决于我们所说的“重构”是什么意思。新增的过渡不会像上面的阴影值那样误导原始文件,但仍然是未被请求的更改。transition``.card

叠加语境(测试2)——五项都算合格,但安全性不高

五个AI工具中没有一个在视觉上破坏了徽章叠加图像的渲染,但有两个工具的呈现方式截然不同。比较Gemini和Claude在同一条规则上的重构:

--- original/style.css
+++ refactors/gemini.css
  .card-image-container {
-   position: relative;
-   z-index: 2;
  }
--- original/style.css
+++ refactors/claude.css
  .card-image-container {
    position: relative;
-   z-index: 2;
  }

Gemini移除了和,使元素完全静止,这保证了它在仍保持位置的徽章之前绘制的阶段,因此无论周围发生变化,排序结构上都是安全的。position``z-index

而克劳德则只是被移除并留下,所以徽章现在都被替换,处于同一涂装阶段。这意味着它们的可见性完全取决于HTML中哪个先出现,CSS中没有任何明确的规定。在标记中交换两者,CSS保持不动,徽章就会消失在图片后面:z-indexposition: relative.card-image-container``z-index: auto

<!-- Today: badge paints on top -->
<div class="card-image-container">...</div>
<span class="badge badge-new">New</span>

<!-- CSS unchanged, markup order swapped: badge is now hidden -->
<span class="badge badge-new">New</span>
<div class="card-image-container">...</div>

虽然这种直接交换在现实代码库中不太可能发生,但更现实的做法是第三个元素(例如愿望单图标或第二个徽章)在它们之间出现,而没有明确的 ,会不可预测地扰乱堆叠。z-index

ChatGPT、Cursor 和 Copilot 都为徽章和图片容器保留了明确的值值——但只有 Cursor 也保持了自身值。没有它,单靠它无法形成叠加上下文,所以ChatGPT、Claude、Copilot和Gemini都失去了产品卡价值无法与外部竞争的隔离感。如今是看不见的,因为页面上没有其他元素使用,但当卡片靠近任何其他位置的z轴索引元素时,它就变得真实。z-indexz-index: 1.cardposition: relativez-index``z-index

发现三:选择器示波器变平是AI常见的盲点(测试6)

我原本以为第六场测试会分裂竞争。结果并没有,但这是个更有趣的发现。每个人工智能工具都会压制测试设计要捕捉的选择器,例如:

--- original/style.css
+++ (all five outputs, identical here)
- .card .card-footer .btn-primary {
+ .btn-primary {
    display: block;
    width: 100%;
    ...
  }
.tag`、、、、,并且所有五种工具都得到了相同的处理。在一个孤立的演示中,这种体验是隐形的;在真实的代码库中,和正是很可能已经存在于全局样式表中的通用名称,将它们从“的范围中平整化”是真实的风险,而非假设性风险。`.card-title``.card-footer``.card-image-container``.card-img``.btn-primary``.tag``.card

唯一的部分例外是光标,它保持徽章家族的范围,而其他人则将其压平:

--- original/style.css
+++ (ChatGPT/Gemini/Claude/Copilot — all four flattened this selector; Cursor did not)
- .card .badge {
+ .badge {
    ...
  }

看起来Cursor比其他四个工具更谨慎,但它仍然不是全面谨慎,因为它保留了徽章家族和顶层规则,同时像其他工具一样把其他部分完全压平了。.card

发现 IV:AI 工具在 CSS 清理过程中常常做出错误假设

有些AI工具做了不该做的假设。测试3抓获了克劳德和双子的现行,而测试5则揭露了ChatGPT和双子。

几乎重复的徽章颜色(测试3)

.badge` (`#4caf50`)和()是有意不同的色调。双子座和克劳德都将它们合并为一个值:`.badge-new``#43a047
--- original/style.css
+++ refactors/gemini.css and refactors/claude.css
  .badge {
-   background-color: #4caf50;
+   background-color: #43a047;  /* .badge-new's color, now used for both */
  }
- .badge-new { background-color: #43a047; }

这是一种倒退,只是微妙且潜在的。如上所述,这两款绿色是Material Design相邻的“Green 500”和“Green 600”色号,相近到视觉差异几乎难以察觉。然而,Gemini和Claude都把 的颜色移到了基础规则中,并完全删除了,所以原本两个独立可调的颜色现在只剩一个。今天换个颜色,所有徽章都会随之变化,无论是否有标记。.badge-new.badge.badge-new``.badge-new

ChatGPT、光标和副驾驶保持了两个值的分离。

部分清理(测试5)

ChatGPT和Gemini也做出了类似的错误假设,但情况正好相反。他们没有像之前那样将某条规则的价值提升到通用规则中,而是将通用规则合并进具体规则,删除并直接合并其样式:.card p``.card-description

--- original/style.css
+++ refactors/chatgpt.css and refactors/gemini.css
- .card p {
-   margin-bottom: 12px;
-   color: #666;
-   font-size: 14px;
-   line-height: 1.5;
- }
  .card-description {
+   color: #666;
+   font-size: 14px;
+   line-height: 1.5;
+   margin-bottom: 12px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

光标、克劳德和副驾驶都将两条规则分开,保留了原版的真实意图。

寻找V:所有AI工具都通过的CSS陷阱

每个AI工具都通过了两个测试:测试4和测试7。然而,在测试4中,这种情况带有免责声明。

状态覆盖(测试4)

ChatGPT、Claude、Copilot、Cursor 和 Gemini 都移除了 的旗帜,结果没有任何损坏,尽管任何工具的输出都没有表明这是有意为之,而非均匀压平的副作用。在原始文件中,和 是基于具体性(即各三个职业),唯一保证促销颜色获胜的因素。!important.promo-active .card .badge.promo-active .card .badge.card .badge.badge-new!important

拯救所有工具的是,没有一个能完整地保留领带。例如,ChatGPT将其从两个类别降为一个,同时保留了两个类别。这不再是平局; 现在无论顺序如何,他都会以2比1直接获胜。其他四个工具也各自做了类似的操作。.badge.badge-new.badge-new.promo-active .badge``.promo-active .badge

供应商前缀(测试7)

与第四场测试赛不同,第七场是干净利落的通过。所有工具都完全未动,也没有提供更新的无前缀替代品。这是CSS文件中唯一一个所有AI工具都被视为禁区,而不是现代化的部分。.card-description-webkit-box-webkit-line-clamp``-webkit-box-orient

寻找 VI:AI 工具如何处理 CSS 自定义属性

三个工具——Cursor、Claude 和 Copilot——在没有提示的情况下引入了 CSS 自定义属性。如果用得好,这真的是一次真正的升级。例如,原始的CSS硬编码在两个不同的地方,用于图像的边缘到边缘出血,悄然绑定在卡片的填充层上。光标和克劳德都注意到了这一点,并将两者联系在一起:-20px``20px

--- original/style.css
+++ refactors/cursor.css and refactors/claude.css
  .card-img {
-   width: calc(100% + 40px);
+   width: calc(100% + var(--card-padding) * 2);
    height: 200px;
-   margin: -20px -20px 0;
+   margin: calc(var(--card-padding) * -1) calc(var(--card-padding) * -1) 0;
  }

Copilot在同一文件的其他地方定义了等效变量,但在这里没有使用。不过这其实是矛盾,不是回归,因为硬编码的值仍然完全匹配原始值。这只是意味着Copilot的令牌系统实际上并没有带来它隐含承诺的单一真理来源优势。--spacing

除此之外,Copilot还添加了一条源代码中没有的规则:

--- original/style.css
+++ refactors/copilot.css
+ .card-wrapper {
+   display: flex;
+   justify-content: center;
+   padding: calc(var(--spacing) * 1.5);
+ }

这算是与原始渲染输出的回归,因为卡片默认是左对齐,变成了页面居中,这是没人要求的布局改动。它更像是未经请求的小小重构。

发现 VII:AI 工具引发了微妙的 CSS 样式回归

七个测试案例中没有一个是为捕捉这种回归而设计的。我是在浏览器里测试这五个演示版的,而不是读CSS时发现的。其中三个游戏的悬停“加入购物车”按钮感觉微妙不同,我一时说不出原因,直到回到原点。原始按钮悬停状态为:

.btn-primary:hover {
  background-color: #1557b0;
  opacity: 0.95;
}

ChatGPT、Gemini 和 Claude 完全取消了这句话:opacity

--- original/style.css
+++ refactors/chatgpt.css, refactors/gemini.css, refactors/claude.css
  .btn-primary:hover {
    background-color: #1557b0;
-   opacity: 0.95;
  }

只有光标和副驾驶保留了这个名字。这是一个单一且容易错过的特性,但丢失它意味着用户实际悬停在按钮上时少了一点反馈。

总体结论:哪个AI工具对CSS的重构效果最好?

这里有一个直接排名,直接基于上述结果。每个测试计2分()、1()、或0()——克劳德测试2除外,该测试分为0.5分,以反映两个复合风险而非一个(见下方脚注)。

我还添加了测试套件外的三个发现(发现I.、发现VI.和发现VII.),每个最高分数为1分,这样单个发现就无法超过实际的检测结果:

光标 副驾驶 ChatGPT 克洛德 双子座
测试1 – 悬停级联 0 0 0 0 0
测试2 – 堆叠上下文 2 1 1 0.5 1
测试3 – 近似重复的数值 2 2 2 0 0
测试4 – 州级覆盖 2 2 2 2 2
测试5 – 部分清理 2 2 0 2 0
测试6 – 选择器范围 1 1 1 1 1
测试7 – 供应商前缀 2 2 2 2 2
七项测试小计 11 10 8 7.5 6
寻找I。——冗余 1 1 1 1 1
寻找VI。——现代化(#1) 1 0 0.5 1 0.5
《寻找VII》。——悬浮不透明度 1 1 0 0 0
总计 14 12 9.5 9.5 7.5

(#1)光标和Claude通过引入自定义属性解决填充耦合问题,获得了满分(1.0分)。Copilot 在添加未使用变量并引入未请求的居中回归后得分为 0。ChatGPT和Gemini因保留自定义属性而获得了0.5的中性分数,因为选择不现代化并不等同于现代化得差。详情请参见上文“寻找VI”。.card-wrapper

正如计分表所示,Cursor获得第一名。它是唯一避免唯一回归的工具,除了其他所有助手一样,测试1只失败,也是仅有的两个保持悬浮不透明度声明的工具之一(发现VII)。

Copilot落后Cursor两分,失去了像ChatGPT和Gemini(测试2)那样的堆叠隔离,并在自定义属性实现上出现了挫折(Finding VI)。.card

ChatGPT和Claude整体上并列,尽管他们走了不同的道路。ChatGPT 在七个核心测试案例中表现略优(8 对 7.5),但 Claude 在 Finding VI 中有效利用自定义属性,使最终得分趋于平稳。

Gemini排名垫底,是唯一一位在七个测试案例中(测试1、测试3和测试5)中失败三项的助理。

一个明显的模式显现:前两名都属于了更具代理感的编辑编码助理,而非聊天界面。这个区分是有道理的。代理工具直接在原地编辑文件,而聊天工具则是根据提示重新生成整个样式表——这样更容易意外更改或删除现有属性。

然而,主要的结论并不是排名本身。而是每个AI工具都引入了一个足够简单的组件,能被一个CSS文件包围。

AI助手在常规清理任务中表现出色,比如删除死代码和删除冗余声明。然而,也有几部作品超出了他们的范围;大多数会添加未被要求的过渡,Copilot则将本不打算移动的卡牌布局置中。虽然AI可以加快CSS重构的速度,但开发者仍需审查输出,发现视觉回归,评估未请求的更改,并确保CSS级联继续按预期解决。

最终,这七个测试用例提供了一个实用且可重复使用的基准。由于提示词和输入样式表保持固定,该测试套件可以轻松评估未来的模型发布或新的AI编码助手,为我们提供了持续的进度衡量方式。

posted @ 2026-09-13 23:08  panxianren  阅读(3)  评论(0)    收藏  举报