<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Workflow on Tao</title><link>https://743v45.github.io/di4urp/tags/workflow/</link><description>Recent content in Workflow on Tao</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>di4urp@gmail.com (taevas)</managingEditor><webMaster>di4urp@gmail.com (taevas)</webMaster><lastBuildDate>Tue, 21 Apr 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://743v45.github.io/di4urp/tags/workflow/index.xml" rel="self" type="application/rss+xml"/><item><title>AI 辅助前端开发：从踩坑到改进的实战手册</title><link>https://743v45.github.io/di4urp/posts/ai-frontend-development-pitfalls-and-solutions/</link><pubDate>Tue, 21 Apr 2026 11:00:00 +0800</pubDate><author>di4urp@gmail.com (taevas)</author><guid>https://743v45.github.io/di4urp/posts/ai-frontend-development-pitfalls-and-solutions/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;我用 Claude Code 开发了一个前端项目（Skill Collect System），前后经历了 8 个 session、数十万字的对话。事后我回溯了所有 session 记录，发现了一个令人不安的事实：&lt;strong&gt;我严格遵循了 brainstorm → design → implement 的标准流程，但产出质量仍然反复翻车。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这篇文章是对整个过程的复盘——问题出在哪、为什么出、怎么改。希望对同样使用 AI 辅助开发的人有参考价值。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一我遵循的标准流程"&gt;一、我遵循的&amp;quot;标准流程&amp;quot;&lt;/h2&gt;
&lt;p&gt;我的工作流看起来很规范：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/sc:brainstorm → 需求探索和澄清
/sc:design → 输出设计方案文档
/sc:implement → 按设计实现功能
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;AI 在每个阶段都声称&amp;quot;设计完美&amp;quot;、&amp;ldquo;方案完整&amp;rdquo;。我按 AI 建议的顺序走完了全流程，然后打开浏览器——页面报错了。&lt;/p&gt;
&lt;p&gt;这不是一次两次。&lt;strong&gt;8 个 session 中，有 6 个出现了实现后返工的情况。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二问题诊断ai-的设计是表演性的"&gt;二、问题诊断：AI 的设计是表演性的&lt;/h2&gt;
&lt;h3 id="核心发现"&gt;核心发现&lt;/h3&gt;
&lt;p&gt;回溯 session 记录后，我发现了一个关键数据点：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Session&lt;/th&gt;
&lt;th&gt;设计阶段耗时&lt;/th&gt;
&lt;th&gt;返工率&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;最早的 session&lt;/td&gt;
&lt;td&gt;~20 分钟，多轮确认&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;其他 5 个 session&lt;/td&gt;
&lt;td&gt;0-2 分钟，直接&amp;quot;实施&amp;quot;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;35%-60%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;唯一零返工的 session 恰恰是设计阶段最充分的那次。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="ai-在设计阶段的两个致命缺陷"&gt;AI 在设计阶段的两个致命缺陷&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;缺陷 1：不验证假设就下结论&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI 设计了 &lt;code&gt;updatedAt&lt;/code&gt; 字段展示，但根本没读后端代码确认字段存在。实际后端用的是 &lt;code&gt;discoveredAt&lt;/code&gt;。实现后页面上全是 &lt;code&gt;Invalid Date&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;一个简单的设计阶段验证：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;读后端 types/skill.types.ts → 发现字段是 discoveredAt → 设计文档用正确的字段
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;AI 实际做的：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;假设字段叫 updatedAt → 写进设计文档 → 声称&amp;#34;设计完美&amp;#34; → 实现后翻车
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;缺陷 2：用文档模板替代真实思考&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI 擅长输出&amp;quot;看起来完整&amp;quot;的文档——有目录、有表格、有验收清单。但这是&lt;strong&gt;格式&lt;/strong&gt;不是&lt;strong&gt;质量&lt;/strong&gt;。一个设计文档 1 分钟就出来了，真正能用的设计不可能 1 分钟完成。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三5-大问题模式"&gt;三、5 大问题模式&lt;/h2&gt;
&lt;h3 id="问题-1设计确认走过场"&gt;问题 1：设计确认走过场&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;表现&lt;/strong&gt;：设计文档出来后，用户直接说&amp;quot;实施&amp;quot;，没有审阅环节。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;根因&lt;/strong&gt;：AI 声称设计完美，用户信任了这个判断。但 AI 的&amp;quot;完美&amp;quot;基于假设，不是基于对现有代码的验证。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代价&lt;/strong&gt;：一个 session 中 &lt;code&gt;layout.tsx&lt;/code&gt; 被反复编辑了 &lt;strong&gt;16 次&lt;/strong&gt;，只为修复一个 CSS 居中问题，耗时 &lt;strong&gt;3 小时&lt;/strong&gt;。这个问题的根因（滚动条宽度影响布局）在设计阶段完全没有被考虑。&lt;/p&gt;
&lt;h3 id="问题-2完成标准太松"&gt;问题 2：&amp;ldquo;完成&amp;quot;标准太松&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;表现&lt;/strong&gt;：AI 以&amp;quot;编译通过&amp;quot;为完成标准，不是&amp;quot;功能可用&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际记录&lt;/strong&gt;：一个 session 中 AI 声称&amp;quot;交付完成&amp;quot;了 &lt;strong&gt;6 次&lt;/strong&gt;，每次用户打开页面都有问题。用户原话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;每次你说完成了，我打开页面又是报错的&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;根因&lt;/strong&gt;：AI 没有真正启动服务验证功能，而是做了静态代码分析就宣布完成。&lt;/p&gt;
&lt;h3 id="问题-3ralph-loop-吃掉了确认环节"&gt;问题 3：Ralph Loop 吃掉了确认环节&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;表现&lt;/strong&gt;：使用自动化循环（Ralph Loop）后，AI 在没有人工确认的情况下反复&amp;quot;完成→失败→重来&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;根因&lt;/strong&gt;：自动化循环缺少检查点。8 个 Agent 并发冲出去写代码，但没有人检查方向对不对。&lt;/p&gt;
&lt;h3 id="问题-4前后端并发缺少接口契约"&gt;问题 4：前后端并发缺少接口契约&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;表现&lt;/strong&gt;：AI 同时写前后端，但类型定义、API 参数、端口配置各自为政。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际案例&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端用 &lt;code&gt;search&lt;/code&gt; 参数，后端期望 &lt;code&gt;q&lt;/code&gt; 参数&lt;/li&gt;
&lt;li&gt;前端类型定义的必填字段，后端根本不返回&lt;/li&gt;
&lt;li&gt;AI 擅自把端口从 3001 改成 3002，未经用户同意&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="问题-5调试过程混乱"&gt;问题 5：调试过程混乱&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;表现&lt;/strong&gt;：AI 在调试时创建了 13 个临时 Playwright 测试文件（&lt;code&gt;quick-audit.spec.ts&lt;/code&gt;、&lt;code&gt;debug-page.spec.ts&lt;/code&gt;、&lt;code&gt;check-404.spec.ts&lt;/code&gt;），命名随意，和正式测试混在一起。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;根因&lt;/strong&gt;：AI 缺乏组织性，把调试产物和项目代码混在一起。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四改进方案"&gt;四、改进方案&lt;/h2&gt;
&lt;h3 id="方案-1设计验证检查点最关键"&gt;方案 1：设计验证检查点（最关键）&lt;/h3&gt;
&lt;p&gt;在 design 完成后、implement 之前，增加一个强制验证步骤：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;提示词模板：
&amp;#34;验证你的设计方案：
1. 列出设计中假设存在的所有接口、字段、组件
2. 逐个到代码里确认它们确实存在
3. 有不一致的地方先修正设计
4. 完成验证后再等我的确认&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;不要说&amp;quot;实施&amp;quot;，要等 AI 验证完设计后再确认。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="方案-2重新定义完成标准"&gt;方案 2：重新定义&amp;quot;完成&amp;quot;标准&lt;/h3&gt;
&lt;p&gt;在 CLAUDE.md 中写入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 完成标准（不可跳过）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;1.&lt;/span&gt; 必须启动开发服务器
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;2.&lt;/span&gt; 必须用浏览器打开页面验证功能
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;3.&lt;/span&gt; 浏览器控制台无报错
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;4.&lt;/span&gt; 所有验收标准逐项通过
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;5.&lt;/span&gt; 以上全部满足后才能声称&amp;#34;完成&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="方案-3为-brainstormdesign-增加约束"&gt;方案 3：为 brainstorm/design 增加约束&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 设计阶段强制规则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;1.&lt;/span&gt; 设计文档必须引用现有代码的实际情况（不是假设）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;2.&lt;/span&gt; 前端设计必须对齐后端 API 返回格式（逐字段确认）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;3.&lt;/span&gt; 设计文档必须包含&amp;#34;影响文件清单&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;4.&lt;/span&gt; 未收到用户明确确认前，禁止写任何代码
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="方案-4谨慎使用自动化循环"&gt;方案 4：谨慎使用自动化循环&lt;/h3&gt;
&lt;p&gt;Ralph Loop 适合重复性任务（批量测试、批量审查），&lt;strong&gt;不适合需要判断力的任务&lt;/strong&gt;（设计确认、需求澄清）。&lt;/p&gt;
&lt;p&gt;使用自动化循环时，每轮结束时应该暂停报告进度，等待人工确认。&lt;/p&gt;
&lt;h3 id="方案-5检查设计文档质量的快速方法"&gt;方案 5：检查设计文档质量的快速方法&lt;/h3&gt;
&lt;p&gt;确认设计前，问自己一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;设计文档里有没有提到现有代码的实际情况？&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果设计文档只描述&amp;quot;要做什么&amp;quot;，没有描述&amp;quot;现有代码是什么样的、需要改哪些文件、字段是否对齐&amp;quot;——那这个设计就是空的，不要说&amp;quot;实施&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五一句话总结"&gt;五、一句话总结&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI 的设计不验证就不可信。你需要的不是更多流程，而是在&amp;quot;设计完成&amp;quot;和&amp;quot;开始实施&amp;quot;之间，加一个验证检查点。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;流程应该是：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;brainstorm → design → 验证设计（AI 自己到代码里确认假设）→ 人工确认 → implement
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;而不是：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;brainstorm → design（声称完美）→ 直接 implement（翻车）
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="附录数据来源"&gt;附录：数据来源&lt;/h2&gt;
&lt;p&gt;本文基于对 Skill Collect System 项目的 8 个 Claude Code session 记录的分析：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Session&lt;/th&gt;
&lt;th&gt;大小&lt;/th&gt;
&lt;th&gt;时长&lt;/th&gt;
&lt;th&gt;主要工作&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;e707e589&lt;/td&gt;
&lt;td&gt;10.4MB&lt;/td&gt;
&lt;td&gt;~25h&lt;/td&gt;
&lt;td&gt;Ralph Loop 自动化实施（最大翻车现场）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ecc16ec3&lt;/td&gt;
&lt;td&gt;3.6MB&lt;/td&gt;
&lt;td&gt;~5h&lt;/td&gt;
&lt;td&gt;UI 改进 + 居中问题 16 次修补&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;49b7ac2a&lt;/td&gt;
&lt;td&gt;2.4MB&lt;/td&gt;
&lt;td&gt;~6h&lt;/td&gt;
&lt;td&gt;目录元数据 + 失踪检测&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;e8ae553a&lt;/td&gt;
&lt;td&gt;1.1MB&lt;/td&gt;
&lt;td&gt;~1h&lt;/td&gt;
&lt;td&gt;折叠功能（跳过设计，35% 返工）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a9263df2&lt;/td&gt;
&lt;td&gt;304KB&lt;/td&gt;
&lt;td&gt;~41min&lt;/td&gt;
&lt;td&gt;项目初始设计（唯一零返工）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item></channel></rss>