<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>工作方法 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《高级工程师死亡螺旋》</title><link>https://channel.meo-ai.com/posts/712</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/712</guid><pubDate>Thu, 24 Sep 2026 12:33:19 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《高级工程师死亡螺旋》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E8%81%8C%E4%B8%9A%E5%8F%91%E5%B1%95&quot; title=&quot;#职业发展&quot;&gt;#职业发展&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%96%87%E5%8C%96&quot; title=&quot;#工程师文化&quot;&gt;#工程师文化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%B7%A5%E4%BD%9C%E6%96%B9%E6%B3%95&quot; title=&quot;#工作方法&quot;&gt;#工作方法&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7&quot; title=&quot;#心理健康&quot;&gt;#心理健康&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. &quot;高级工程师死亡螺旋&quot;是作者观察到的常见失败模式：工程师在新工作、晋升或大项目开始时，试图&quot;扮演&quot;比自己更资深的角色，设计过于雄心勃勃的方案。&lt;br /&gt;&lt;br /&gt;2. 螺旋的典型表现是：工程师消失数周，在站会上给出&quot;积极更新&quot;但实际上没有产出，然后开始告诉自己&quot;需要更努力工作来弥补&quot;，最终失眠、抑郁、人际关系受损，导致倦怠、被PIP、辞职等最坏结果。&lt;br /&gt;&lt;br /&gt;3. 远程工作和AI编码工具的普及加剧了这一问题：工程师更加孤立，缺乏传统的工作结构和同事间的日常交流，使得&quot;没人知道你在做什么&quot;的情况更容易发生。&lt;br /&gt;&lt;br /&gt;4. 破解螺旋的反直觉方法是&quot;降低一级&quot;：不要试图表现得比实际级别更高，而是成为最好的队友——做bug修复、帮别人处理繁琐工作、做组织性事务，通过帮助他人来重建动力。&lt;br /&gt;&lt;br /&gt;5. 关键 mindset 转变是从&quot;结果导向&quot;转向&quot;动力导向&quot;：建立日常 routine，通过每天一点点的工作积累动力，修复与同事的关系，最终获得&quot;耐力&quot;。&lt;br /&gt;&lt;br /&gt;6. 核心洞察是：大项目不是靠大努力完成的，而是靠缓慢、稳定、增量的工作——每天、每小时地做，直到成为肌肉记忆。&lt;br /&gt;&lt;br /&gt;7. 最终目标是建立可靠性声誉：通过减轻队友和经理的负担来建立信任，然后自然会获得更大的工作机会——因为&quot;你处在建立声誉的生意中，软件只是下游产品&quot;。&lt;br /&gt;&lt;br /&gt;8. 作者强调雇主雇佣的是&quot;现在的你&quot;，而不是&quot;六个月后你认为你会成为的那个人&quot;，因此不需要通过过度努力来证明自己。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://sunilpai.dev/posts/the-senior-engineer-death-spiral/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://sunilpai.dev/posts/the-senior-engineer-death-spiral/&quot;&gt;https://sunilpai.dev/posts/the-senior-engineer-death-spiral/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://sunilpai.dev/posts/the-senior-engineer-death-spiral&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;on proving yourself, burning out, and being a good teammate&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Solving the decision problem&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;the senior engineer death spiral&quot; src=&quot;/static/https://cdn4.telesco.pe/file/WV54nFF5Q_qCNQsCDpF5dAmO9pQLvIpxRFVNqk75Nsj42KnySXFGiZc2Mf6_unuXQQmL7KBoHUXReZ6kShj8CvvImuqg7IrH9x8rGaGm6cr05bO1dkWUaz66BQKZ6PTvkUxDR1bJu-594cXWl86ayrJGMsBL7svZ3rpg3JqAPBu7ycLCWfZamLnXDMbF3YEXf5xMI60-8QbcmDSFmfHgBzQ3oJcB3sRVawkLS73RHAiHaqlUZp-24jqtL620IY5QzxKX0aN6-Q9hMEh9e7bHbUGikfD5UVyvrClyscQAkhbOOrqZZ01-Bo0-bogDQ0or7MsdejXTYbt02-GScxq6UQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;the senior engineer death spiral&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;on proving yourself, burning out, and being a good teammate&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《十个防止 AI 代码泛滥的前端项目护栏》</title><link>https://channel.meo-ai.com/posts/705</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/705</guid><pubDate>Thu, 10 Sep 2026 23:23:08 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《十个防止 AI 代码泛滥的前端项目护栏》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TypeScript&quot; title=&quot;#TypeScript&quot;&gt;#TypeScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E7%BC%96%E7%A8%8B&quot; title=&quot;#AI编程&quot;&gt;#AI编程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F&quot; title=&quot;#代码质量&quot;&gt;#代码质量&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ESLint&quot; title=&quot;#ESLint&quot;&gt;#ESLint&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B5%8B%E8%AF%95%E7%AD%96%E7%95%A5&quot; title=&quot;#测试策略&quot;&gt;#测试策略&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CI_CD&quot; title=&quot;#CI_CD&quot;&gt;#CI_CD&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E5%AE%A1%E6%9F%A5&quot; title=&quot;#代码审查&quot;&gt;#代码审查&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5&quot; title=&quot;#工程实践&quot;&gt;#工程实践&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;本文针对 AI 生成代码速度远超人类审查能力的前端项目，提供了一套实用的十项防护清单。核心思路是通过自动化工具链（类型系统、Linter、变异测试、CI 门禁）在代码合并前拦截机械性错误，而非依赖人工逐行审查。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;用 OpenAPI 契约替代手写类型&lt;/b&gt;：通过 Hey API 等工具从 OpenAPI 规范直接生成 TypeScript 类型、客户端和 Zod 校验，避免 AI 臆造不存在的 API 字段（如 &lt;code&gt;user.fullName&lt;/code&gt;），让编译器在构建期就报错。&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;开启严格 TypeScript 配置&lt;/b&gt;：启用 &lt;code&gt;noUncheckedIndexedAccess&lt;/code&gt; 等严格标志，让数组索引访问返回 &lt;code&gt;T | undefined&lt;/code&gt;，迫使代码显式处理边界情况，减少 AI 常见的&quot;想当然&quot;代码。&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;把 Linter 当作行为过滤器&lt;/b&gt;：使用 SonarJS、react-you-might-not-need-an-effect、vitest/playwright 插件、jsx-a11y 等 ESLint 插件，自动拦截认知复杂度过高、不必要的 Effect、可访问性违规等问题。&lt;br /&gt;&lt;br /&gt;4. &lt;b&gt;设定架构层边界&lt;/b&gt;：使用 eslint-plugin-boundaries 或 dependency-cruiser 强制实施分层架构（如 UI 层不得直接访问 API 层），防止 AI 生成的代码逐渐退化为&quot;GitHub 平均水平&quot;的混乱结构。&lt;br /&gt;&lt;br /&gt;5. &lt;b&gt;将重复出现的错误转化为自定义 Linter 规则&lt;/b&gt;：当同一种 bug 第二次出现时，立即编写自定义 ESLint 规则禁止该模式。例如禁止在服务层函数中使用 &lt;code&gt;Math.round&lt;/code&gt; 和 &lt;code&gt;toFixed&lt;/code&gt;，避免双重取整导致的薪资计算错误。&lt;br /&gt;&lt;br /&gt;6. &lt;b&gt;把规则直接喂给 AI 模型&lt;/b&gt;：通过项目规则文件（如 &lt;code&gt;.cursor/rules&lt;/code&gt;、&lt;code&gt;CLAUDE.md&lt;/code&gt;）或技能文件（如 react-doctor），将项目约定、架构决策和禁止模式直接提供给 AI，让模型在生成代码时就遵循规范。&lt;br /&gt;&lt;br /&gt;7. &lt;b&gt;用变异测试验证测试有效性&lt;/b&gt;：使用 Stryker 故意破坏代码（翻转运算符、反转条件、交换返回值），检查现有测试是否能捕获这些变异。存活的变异体通常暴露&quot;只测形状不测内容&quot;的无效测试。一个项目约 4,700 个变异体在 6 分钟内完成扫描。&lt;br /&gt;&lt;br /&gt;8. &lt;b&gt;用 Knip 清理死代码&lt;/b&gt;：Knip 可以检测未使用的文件、导出和依赖，配合自定义可达性脚本填补其盲区，防止 AI 生成大量&quot;以防万一&quot;却无人调用的冗余代码。&lt;br /&gt;&lt;br /&gt;9. &lt;b&gt;用 jscpd 检测重复代码&lt;/b&gt;：AI 倾向于在不同地方生成几乎相同的逻辑，jscpd 能发现这些重复，提示抽象机会或错误的复制粘贴。&lt;br /&gt;&lt;br /&gt;10. &lt;b&gt;将所有检查强制设为 CI 门禁&lt;/b&gt;：上述所有工具（类型检查、Lint、测试、变异测试、重复检测）必须作为 CI 的强制通过项，而非可选建议，确保 AI 生成的代码无法绕过质量关卡。&lt;br /&gt;&lt;br /&gt;11. &lt;b&gt;成本与局限&lt;/b&gt;：这些护栏会产生噪音（误报）、规则过时和新人上手摩擦等成本，建议按&quot;类型 → Lint → 测试 → CI&quot;的顺序渐进式推行。同时需注意，这些检查只能捕获机械性错误，无法识别糟糕的品味或错误的抽象。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://evilmartians.com/chronicles/ten-anti-ai-slop-moves-for-frontend-projects-going-faster-than-humans-can-review&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://evilmartians.com/chronicles/ten-anti-ai-slop-moves-for-frontend-projects-going-faster-than-humans-can-review&quot;&gt;https://evilmartians.com/chronicles/ten-anti-ai-slop-moves-for-frontend-projects-going-faster-than-humans-can-review&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://evilmartians.com/chronicles/ten-anti-ai-slop-moves-for-frontend-projects-going-faster-than-humans-can-review&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Ten checks that catch what AI-written frontend code hides: contract codegen, boundary linting, mutation testing, and dead-code detectors.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;evilmartians.com&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;10 anti-AI slop moves for frontend projects going faster than humans can review—Martian Chronicles, Evil Martians’ team blog&quot; src=&quot;/static/https://cdn4.telesco.pe/file/M8U_Fe7M2gHOVcQM8XPpszalMyQIXRzmCokcCm_4dgcjkvIzQMlUYvsgmehUQC-NXCJGc3I8VY2eVIBkKPAVZkYiGTqLga5hRE0vlrIEN-NkyQMSO8-2Jvw2KDqQbQreg_haZqG_9bJF5WftGhdMmwjZOuCvSjmydEd5cT5fncbj22jwHNKyE0bKDJsBv9lYte-NCz1-Luv1TDht4195efFJApkQ1lPvOF_LBJz_mw8fvv9SPSbysOMKWZ8GCcH5JGEb56pCMV7ioa2QMiq3Xu84zYM95pDo-s18Pce77OetyKD2n7Yn8M6J_CVFGam6c__TEJncp_jGmxQsYu7KLQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;10 anti-AI slop moves for frontend projects going faster than humans can review—Martian Chronicles, Evil Martians’ team blog&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Ten checks that catch what AI-written frontend code hides: contract codegen, boundary linting, mutation testing, and dead-code detectors.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>