<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Contract First on Miao Kong</title><link>https://miaok.ong/tags/contract-first/</link><description>Recent content in Contract First on Miao Kong</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Sun, 21 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://miaok.ong/tags/contract-first/index.xml" rel="self" type="application/rss+xml"/><item><title>Vibe Coding 的蜜月期结束了：AI 开发正在从"写代码"进化到"写契约"</title><link>https://miaok.ong/posts/vibe-coding-contract-first/</link><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid>https://miaok.ong/posts/vibe-coding-contract-first/</guid><description>&lt;blockquote&gt;
&lt;p&gt;自然语言描述需求 → 等 AI 吐代码 → 跑一下，居然能用。这种体验太爽了。但当你把这种模式带入超过 3 天、超过 3 个文件的真实项目时，爽感会在某个深夜崩溃：这个数为什么是 0？这个页面数据是哪来的？为什么 mock 数据被当成了生产结果？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="一vibe-coding-的临界点"&gt;
 一、Vibe Coding 的临界点
 &lt;a class="heading-link" href="#%e4%b8%80vibe-coding-%e7%9a%84%e4%b8%b4%e7%95%8c%e7%82%b9"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;2026 年 6 月，73% 的开发团队在日常工作中使用 AI 编码代理&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。Codex 推出了跨设备任务迁移（Handoff）和操作复刻（Record &amp;amp; Replay），Claude Code 上线了可视化协作的 Artifacts 功能，GLM-5.2 在编程基准上逼近顶级闭源模型。&lt;/p&gt;
&lt;p&gt;工具栈在飞速成熟，但一个更根本的问题浮出水面：&lt;strong&gt;开发范式没有跟上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Vibe Coding 这个从 2025 年流行起来的词，描述的是一种&amp;quot;凭感觉&amp;quot;的 AI 辅助开发方式：用自然语言描述你想做什么，让 AI 写代码，跑通就算完。它的核心体验是&lt;strong&gt;快感驱动&lt;/strong&gt;——省去了查文档、设计接口、写测试的&amp;quot;枯燥&amp;quot;环节，直达&amp;quot;看到效果&amp;quot;的多巴胺。&lt;/p&gt;
&lt;p&gt;问题也在这里。Vibe Coding 的验证终点是&amp;quot;页面能跑&amp;quot;。但在 AI 的加持下，一个数据全部伪造的页面也能跑得很快。&lt;/p&gt;
&lt;p&gt;X 上开发者 @dotey 系统性地回应了这个问题：&amp;ldquo;需求分析、系统设计、代码审查和灰度发布在 AI 时代非但不能省，反而更重要。&amp;ldquo;另一位从安全从业者转向全栈开发的 @Pluvio9yte 则提出了一个更精准的主张——&lt;strong&gt;Contract First&lt;/strong&gt;。不是需求文档驱动，也不是纯粹代码驱动，而是先定义接口、数据模型和验收标准这些&amp;quot;契约&amp;rdquo;，再把它们作为人和 AI 之间稳定的参照物。&lt;/p&gt;
&lt;p&gt;这个话题今天在技术社区爆发，不是偶然的。它标志着 AI 辅助开发正在经历从&amp;quot;能用&amp;quot;到&amp;quot;可靠&amp;quot;的范式迁移。&lt;/p&gt;
&lt;h2 id="二一个真实翻车案例demo-惊艳生产致命"&gt;
 二、一个真实翻车案例：Demo 惊艳、生产致命
 &lt;a class="heading-link" href="#%e4%ba%8c%e4%b8%80%e4%b8%aa%e7%9c%9f%e5%ae%9e%e7%bf%bb%e8%bd%a6%e6%a1%88%e4%be%8bdemo-%e6%83%8a%e8%89%b3%e7%94%9f%e4%ba%a7%e8%87%b4%e5%91%bd"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;我们内部有一个 AI 辅助开发项目。目标是用 AI Agent 完成一个投资看板 Web App：自选股管理、日报查看、研究库搜索、方法论浏览，最终做成 PWA，手机可用。&lt;/p&gt;</description></item><item><title>Vibe Coding 的下一个范式：从「需求优先」到「契约优先」</title><link>https://miaok.ong/posts/contract-first-vibe-coding-paradigm/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://miaok.ong/posts/contract-first-vibe-coding-paradigm/</guid><description>&lt;h3&gt;500 行的诅咒&lt;/h3&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;不知道你是否有过这种体验：打开 Cursor 或者 Claude Code，三句话描述需求，AI 刷刷刷生成了几百行代码。功能跑起来了，你很满意。继续加功能，再让 AI 改，再改……&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;到第五轮对话的时候，你发现不对了。AI 开始「忘记」之前约定好的接口格式。一个参数名莫名其妙地变了。一个原本正常的函数被重构出了三个彼此冲突的版本。你开始花越来越多的时间&lt;strong&gt;读代码&lt;/strong&gt;——不是 review，是在找 bug。更糟糕的是，这些 bug 并非逻辑错误，而是 &lt;strong&gt;AI 在不同对话轮次之间产生了不一致&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;这就是「500 行的诅咒」：vibe coding 的魅力在项目复杂度的&lt;strong&gt;线性增长&lt;/strong&gt;面前，呈现&lt;strong&gt;断崖式衰减&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;h3&gt;安全工程师的顿悟&lt;/h3&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;@Pluvio9yte 最近的一篇深度总结把这个洞察讲透了。他原是一名安全工程师，后来 all-in 全栈开发——每天大量使用 AI 编程工具。&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;他的核心洞察很反直觉：&lt;strong&gt;Vibe Coding 的最佳实践，既不是「需求优先」，也不是「代码优先」，而是「契约优先」。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;为什么？因为「需求优先」的问题是——需求文档写出来后，AI 并不会天然遵守。它在每一轮对话中都会重新「理解」需求，而理解的结果可能每次都略有不同。「代码优先」的问题更直接：当代码本身就是唯一真相来源时，AI 的每次修改都可能在局部最优的前提下破坏全局一致性。&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;他基于 OpenSpec 搭了一套方法论：&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;blockquote&gt;1. &lt;strong&gt;先定接口契约&lt;/strong&gt;——输入、输出、副作用、不变量，必须写在代码之前&lt;br&gt;2. &lt;strong&gt;契约成为人和 AI 共同的 single source of truth&lt;/strong&gt;——所有对话上下文都以契约为锚&lt;br&gt;3. &lt;strong&gt;spec 漂移在开发阶段就被捕获&lt;/strong&gt;——而不是等到上线靠用户帮你发现&lt;/blockquote&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;这套思路最大的价值在于：它把「容易漂移的上下文」外化成了一个稳定的参照物。人对它有充分理解，AI 对它也有明确的约束。&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;h3&gt;工具侧正在发生的事&lt;/h3&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;如果你关注各大 AI 编码平台最近一个月的更新，会发现一个共同趋势。&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Claude Code Artifacts：解决协作黑洞。&lt;/strong&gt;过去 AI 编程成果「只有操作者自己能看到」。Claude Code 刚推了 Artifacts 功能——把 AI 编程过程中的产出（调试数据、架构图、PR 走查结果）生成可实时分享的交互式网页。但关键在于：这功能起作用的前提是，有结构化的东西可以分享。如果你的 AI 代码本身就是一团 hash，Artifacts 也救不了你。&lt;/p&gt;</description></item></channel></rss>