AI 编程的正确姿势:从 Vibe Coding 到 Spec Coding

作为一名天天和代码打交道的开发者,我这段时间最大的感受是:AI 编程不是随便喊几句提示词,而是一套全新的工作方法。

 

很多人现在用 AI 写代码,还停留在「凭感觉」阶段——想到啥说啥,让 AI 随便生成,跑通就行。我把这种模式叫做 Vibe Coding(氛围编程)。

 

它的特点很明显:

 

- 靠直觉、靠模糊意图驱动

- 写小 Demo、独立脚本特别快

- 但一到复杂业务,立刻暴露问题:AI 幻觉、逻辑跑偏、代码不可预测、后期根本没法维护

 

说白了,Vibe Coding 适合快速验证想法,却撑不起企业级、可维护的真实项目。

 

于是我开始思考:怎么让 AI 编程变得可靠、可控、可审计?

答案就是:Spec Coding——规范驱动编程。

 

在我看来,Spec Coding 就是给 AI 编程立一部「宪法」。

不是让 AI 自由发挥,而是先定义精确、无歧义的规范(Spec),再让代码严格服从契约。

 

它和 Vibe Coding 的核心区别一眼就能看明白:

 

1. 依据不同

Vibe 靠感觉,Spec 靠结构化文档、接口定义、业务规则。

2. 可靠性不同

Vibe 结果不可控,容易堆技术债;Spec 行为可预期、可验证。

3. 成本分布不同

Vibe 前期爽,后期维护爆炸;Spec 前期花点时间写规范,后期极稳、成本极低。

 

一句话总结:

Vibe Coding 是玩原型,Spec Coding 才是做工程。

 

 

 

我总结的 Spec Coding 四步流水线

 

我把这套方法拆成了标准化流程,任何人都能直接照搬:

 

1. Specify(产品定义)

 

先把「做什么」写清楚,像产品经理一样输出类 PRD 文档:

目标用户、核心功能、边界、要解决的痛点,把需求锁死。

 

2. Plan(技术规划)

 

进入技术方案:

确定技术栈、系统架构、接口契约、代码规范,把「怎么做」定下来。

 

3. Tasks(任务拆解)

 

把大方案拆成原子化任务,

每个小任务都配上明确的验收标准(AC),AI 不许跑偏。

 

4. Implement(AI 执行)

 

把  requirements.md 、 design.md 、 tasks.md  一起交给 AI。

接下来你不用盯着、不用反复改提示词,只负责最终验收。

 

这才是 AI 时代高效、稳健的开发方式。

 

 

 

适合落地的工具

 

我也关注了目前支持这套流程的工具:

 

- Spec-Kit:GitHub 上很火,让 Claude、Codex 无缝跑 Spec 工作流

- Amazon Kiro:亚马逊推出的 IDE,原生支持「先写 Spec 再写代码」

 

 

 

最后想说

 

AI 不是来替代程序员的,

而是在倒逼我们从「敲代码的人」升级为「定规范、控质量、管系统的人」。

 

- 还在靠 Vibe Coding 碰运气?

- 想把 AI 真正用进企业级项目里?

- 希望代码可预测、可审计、可维护?

 

Spec Coding,就是你要找的答案。

 

未来的优秀程序员,不再是手速最快的人,

而是最会给 AI 定规则、写契约的人。

 

Read more

AI Skills:前端新的效率神器!

近来,AI 领域有个火爆的话题:Skills。 Github 上被疯狂 star 的仓库,很多都是和 skills 有关的。 有的仓库仅仅上线三个月就获得了快 50K 的 star,Skills 的火热可见一斑。 不管是大模型,还是 Cursor、Codex、Claude、Trae、Copilot 等编程 IDE 都在争先支持 Skills。 围绕 Skills,它们在做的就是为了完成一件事情:技能是通过学习和反复练习获得的,而 Skills 是把经验和最佳实践沉淀为 AI 能力,将“知道”转化为“做到”的本领。 详解什么是 Skills 要说清楚什么是 Skills,先来了解一下关于 AI 的 2

【Java Web学习 | 第三篇】CSS(2) - 元素显示模式

【Java Web学习 | 第三篇】CSS(2) - 元素显示模式

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * CSS元素显示模式 * 2.1 什么是元素显示模式? * 2.2 三大核心显示模式详解 * 1. 块级元素(Block Level Elements) * 2. 行内元素(Inline Elements) * 3. 行内块元素(Inline-Block Elements) * 2.3元素显示模式的转换语法 * 1. 转为块级元素:`display: block` * 2. 转为行内元素:`display: inline` * 3. 转为行内块元素:`display: inline-block` * 2.4 实战案例:小米侧边栏实现 * 2.

前端安全:别让你的应用变成黑客的游乐场

前端安全:别让你的应用变成黑客的游乐场 毒舌时刻 这代码写得跟网红滤镜似的——仅供参考。 各位前端同行,咱们今天聊聊前端安全。别告诉我你还在写明文存储密码,那感觉就像把家门钥匙挂在门口——方便,但不安全。 为什么你需要前端安全 最近看到一个项目,登录表单直接把密码发送到服务器,没有任何加密。我就想问:你是在做应用还是在给黑客送大礼? 反面教材 // 反面教材:不安全的登录 // components/LoginForm.jsx export default function LoginForm() { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const handleSubmit = async (e) => { e.preventDefault(); // 直接发送明文密码 const response = await

Claude+Android Studio联动开发:我是如何用AI助手10分钟搞定WebView项目模板的

Claude+Android Studio联动开发:我是如何用AI助手10分钟搞定WebView项目模板的 上周三下午,产品经理突然丢过来一个需求:“下周一要演示一个内嵌H5页面的App原型,能不能先搭个架子?”我看了眼时间,距离下班只剩两小时。要在这么短的时间内从零开始搭建一个完整的Android WebView项目,还要处理好权限声明、Gradle依赖、网络配置这些琐碎但容易出错的部分,换作以前我肯定要加班到深夜。 但这次,我只用了十分钟。 不是因为我手速快,而是因为我找到了一个全新的工作流——让Claude这个AI助手帮我处理那些重复性的配置工作。整个过程就像有个经验丰富的搭档在旁边,你只需要告诉他你想要什么,他就能把代码、配置、甚至最佳实践建议都准备好。 如果你也在Android开发中遇到过类似的情况:每次新建项目都要反复查阅文档,担心漏掉某个关键权限,或者被Gradle版本兼容性问题搞得焦头烂额,那么这篇文章就是为你准备的。我会详细拆解如何通过自然语言指令,让Claude生成一个完整、可运行的WebView模块,并且补充那些官方文档很少提及的组件化实践细节。 1.