AI Coding 新范式:基于 Spec Coding 的新玩法

随着大型语言模型在代码生成领域的突破性进展,软件开发正在经历一场深刻的范式革命。传统的、以人为主导的编码模式正逐渐被新型的人机协作模式所取代。在这一变革浪潮中,两种截然不同的AI编程范式------Vibe Coding和Spec Coding------应运而生。

本文将对比两种编程范式Vibe Coding 与 Spec Coding ,并通过 spec-kit 来尝试一个案例,体验下 AI 时代,编程的最新玩法。

一、AI Coding 分级

AI Coding 分级体系可充分借鉴自动驾驶行业的成熟理念,构建从 L1 到 L5 的渐进式能力图谱:L1-L3 对应已深度融入研发生命周期的辅助工具;L4 进入"无人区",AI 首次具备独立交付完整项目的能力,可初步替代人类工程师岗位;L5 则通过多智能体协同,端到端还原真实研发团队的完整工作流程,实现"零人类"闭环。

二、AI Coding 范式

1、Vibe Coding是一种直觉驱动的快速原型方法,通过自然语言与AI对话,以极高的速度将模糊想法转化为可运行代码,适用于个人项目、创意探索和MVP验证,但其生成的代码质量、可维护性和团队协作性较差。由 OpenAI联合创始人Andrej Karpathy在2025年初提出的"氛围编程"概念,强调"忘记代码存在,专注创意表达"的开发模式。

2、Spec Coding则是一种规范驱动的可控工程方法,强调在编码前通过结构化的文档明确需求和设计,再让AI在严格约束下生成代码,适用于企业级复杂项目、团队协作和需要长期维护的系统,虽然前期投入较高,但能保障代码质量和项目的可控性。从"Vibe"到"Spec"的演进,强调结构化与可控性,解决复杂项目中的可控性问题。

在软件开发的两种极端之间,Vibe Coding 与 Spec Coding 像两条岔路:一条凭直觉狂奔,一条按蓝图缓行。前者把键盘当画笔,先"跑起来"再谈对错;后者把需求当契约,先"画清楚"再动工。它们不是优劣之争,而是速度-可维护性天平上的左右砝码。

结论与建议

  • 选择 Vibe Coding:适合初创阶段、需求不明确、快速试错、创意探索型项目。
  • 选择 Spec Coding:适合成熟业务、需求明确、团队协作复杂、长期维护型项目。

实际项目中,往往两者结合使用,初期用Vibe Coding快速探索,后期用Spec Coding规范化管理,实现效率与质量的平衡。

三、聚焦 Spec Coding

在 Amazon Kiro IDE 中,只需把一句"给我做个会员系统,炫酷一点"扔进对话框,30 秒后你就会得到三份文件:requirements.mddesign.md、tasks.md------这是规范驱动开发(Spec-Driven Development,SDD)第一次以 IDE 原生能力的形态出现在主流工作流中。

Kiro 用静态提示词模板把模糊 Prompt 拆成角色-场景-验收,再生成上下文图与任务列表,看似完成了"从一句话到可执行计划"的魔术,却也在悄悄暴露一个老问题:业务黑话、缺失主语、隐性规则这些在人类评审里都要反复拉扯的坑,AI 同样会一脚踩空。

下文我们将聚焦 Spec Coding 这一范式,通过 Spec-Kit 来构建提示词链路与文档生成策略,看它在多大程度上能把"需求歧义"提前锁进笼子,又会把哪些新坑留给编译器之后的环节。

四、初始化

项目地址:github.com/github/spec...

1、安装uv包管理器

brew install uv

如果电脑没有安装,请先安装 brew,参考 Mac 安装: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2、构建项目

直接使用如下命令,初始化项目:

uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>

bash 复制代码
# 示例:
# uvx --from git+https://github.com/github/spec-kit.git specify init try-spec-coding

# (若已有项目)集成 Spec-Kit,则执行初始化即可
uvx --from git+https://github.com/github/spec-kit.git specify init --here

接下来,会卡在这一步:

3、准备 AI assistant

这里你可以选择 Claude,如果没有账号,想要尝试下,使用 Qwen 即可。官网地址:qwenlm.github.io/qwen-code-d...

Qwen Code 将先进的代码模型能力带入你的终端,提供交互式的 Read-Eval-Print Loop (REPL) 环境。Qwen Code 由一个客户端应用 (packages/cli) 和一个本地 server (packages/core) 组成。Qwen Code 还包含多种工具,用于执行文件系统操作、运行 shell 命令和网络请求等任务,这些工具由 packages/core 管理。

全局安装:

bash 复制代码
npm install -g @qwen-code/qwen-code

# 这里注意 Node 版本需要切换到 V20 以上,如:
nvm use v20.19.5

首次使用,输入命令 qwen,做授权校验,之后就可以使用了。

测试下是否正常工作:

4、继续项目

安装好 QWen 后,选择即可。

按照指导,下一步即可创建项目。

注意

Agent 文件夹安全性:某些 Agent 可能会在你的项目中的 Agent 文件夹内存储凭证、认证令牌或其他可识别和私有的信息。建议将 .qwen/(或其部分内容)添加到 .gitignore 中,以防止意外泄露敏感信息。

五、小试牛刀

进入我们上面初始化的项目: cd try-spec-coding

1、Constitution(原则):建立项目原则

bash 复制代码
/constitution 项目使用 React 构建,UI框架使用 Antd,如果涉及服务端请使用 Eggjs。项目严格要求测试文档,且注意前后端分离;必要的 Readme文档;

确认执行

创建完成,可以在目录下看到 constitution.md 文档:

2、Specify(规格化):创建需求说明

bash 复制代码
/specify 我需要构建一个AI资讯站点,可以通过API接口获取每日资讯,资讯内容包含:标题、时间、分类、评分、摘要、配图等信息。资讯以卡片形式展示,每行4列。页面由标题、搜索框、资讯卡片区域构成。标题需要醒目一些,赛博朋克风格。搜索框与资讯卡片联动,可以实时搜索。资讯卡片内容较多时,使用无限滚动加载,注意用户体验。整体风格暗黑色系,注意美观大方,动画效果酷炫。

等待生成,查看并修改 spec.md 文档:

3、Plan(规划):制定实施方案

bash 复制代码
/plan 使用 React 编写客户端,Eggjs 提供服务端,MongoDB数据库,JWT认证,nodemailer发送验证邮件

等待生成,查看文档:plan.md

4、Tasks(任务分解):生成可执行任务

bash 复制代码
/tasks 将上述要求和计划分解为可执行的开发任务

查看并修正:tasks.md

5、Implement(实现):执行实施

bash 复制代码
/implement 基于TDD原则实现代码

这一步还是真正开始写代码了,等待生成:

运行单元测试:

看看效果:

最终的项目目录如下:

js 复制代码
demo/

├── spec.md              # 项目规格文档

├── plan.md              # 技术实现计划

├── tasks.md             # 任务分解列表

├── tests/               # 测试文件

│   ├── unit/

│   ├── integration/

│   └── e2e/

├── app/                 # 源代码

├── docs/                # 项目文档

└── README.md           # 项目说明

注意:这里修改了部分项目个性化信息,看看最通用的结构即可。

六、总结

Spec-Kit 以"规格驱动"重塑 AI Coding,让它从"闲聊式编码助手"跃升为"结构化软件开发搭档"。其核心信条只有四句:

1、先想后写:用规格厘清需求,再落笔成码。

2、测试先行:把质量关搬进第一行代码。

3、文档即契约:一份活文档,让团队零摩擦协同。

4、持续迭代:让每一次提交都比上一次更优雅。

当然,Spec Coding 也并非银弹,它更像一把双刃剑------

1、需求一抖,规格全朽。项目里一次"小小"的 pivot,可能让前期精雕细琢的 spec 瞬间变废纸,重写成本不亚于把高速列车改航道。

2、前期"重规"能否换来后期"轻债"?当规范文档的厚度超过代码行数,而迭代速度又被市场按在地上摩擦,ROI 的问号就会像编译器警告一样越滚越大:我们到底是在投资可维护性,还是在为仪式感买单?

于是问题来了:

如果需求必然漂移,Spec Coding 该不该给"变更"本身也写一份 Spec?

当 AI 已经能把"跑起来"的 Vibe Coding 反向生成规格,我们是否还需要人类先画蓝图?

相关推荐
AI炼金师15 小时前
Claude Code - AWS Skills
云计算·ai编程·aws·极限编程·vibecoding
周末程序猿15 小时前
谈谈 `Claude Skills`
人工智能·ai编程
Keegan小钢17 小时前
为时一个月:我用 AI 从 0 到 1 完成了第一个生产级 Web3 项目的上线
web3·ai编程
Baihai_IDP17 小时前
AI 编程热潮下的万字思考 —— 规避风险,善用其利
人工智能·程序员·ai编程
一乐小哥17 小时前
用 AI 搞出 Chrome 版 “飞书 Command+K”!Figma AI 救了我的审美
前端·ai编程
玲小珑17 小时前
LangChain.js 完全开发手册(十七)实战综合项目三:个性化学习助手平台
langchain·ai编程
mxpan17 小时前
从 0 到 1:用 Python 对接阿里云 DashScope,轻松实现 AI 对话功能
python·ai编程
飞哥数智坊19 小时前
Claude Code 网页版上线,让我更确信:AI 编程需要“少干预”
人工智能·ai编程·claude
后台开发者Ethan1 天前
FastAPI之 Python的类型提示
python·fastapi·ai编程