一个在校学生的 Vibe-Coding道路

写在前面

从前,我们比谁代码写得快、bug 调得准;现在,我们比谁能把想法讲清楚、把规则定明白。

这场变化的主角不是更强大的框架,也不是更快的语言,而是人与 AI 协作方式的升级------从"我写每一行"到"我指挥整个开发流"。

而驱动这场转变的核心理念,正是 SDD(Spec-Driven Development,规范驱动开发) :先写好"做什么",再让 AI 精准执行"怎么做"。

在这条路上,我从一个被课程设计逼到崩溃的学生,慢慢摸索出一套属于自己的 Vibe Coding 节奏。接下来,我想和你聊聊这段真实的成长经历。

而这一切的转折点,就藏在 SDD(Spec-Driven Development,规范驱动开发) 之中。

传统coding

在 AI 编程工具尚未普及的年代,相信有很多人入门都是敲"CQ外卖"这样的程序开始接触开发的吧,我也不例外。

开发一个像"CQ外卖"这样的 Spring + Vue 全栈项目,是一场消耗人力、流程固定、节奏缓慢的工程。

那时候其实已经有 AI 了,只是我们不会用------不知道怎么问,也不敢信它能写出靠谱代码。于是后端还是老老实实用 MyBatis 手写 DAO,前端靠 Vue 的 data 和 methods 一点点拼页面

连一个简单的"加入购物车"动画都要翻文档、调样式、反复刷新浏览器看效果。

AI 就在旁边,像一个沉默的特种兵

整个过程常常就一个人包揽全部:自己写需求、画界面、前后端一起写,最后再自己点按钮、输乱码测试会不会崩。没有分工,却有全套流程的负担。

一旦哪块卡住------比如接口还没通,页面就动不了------整个项目就原地停摆。

这种传统 coding 模式本身并不低效------它讲流程、重规范、求稳定,恰恰是大型项目所需要的。

但一旦面对"现在就要用"这类轻量、即时的场景,它的重量就变成了负担。
正因如此,开发者开始转向新的思路:不再一上来就写代码,而是先写清楚规则;不再靠一个人硬扛全栈,而是让 AI 成为协作伙伴。

Vibe Coding

事情是这样的:当我为 JavaWeb 课程设计焦头烂额,一位同学已经用 Trae 辅助完成了他的项目。他没熬夜,也没在控制台里疯狂404 500,反而早早完成了课设。

他看我快被课设弄崩溃了,就顺手把使用方法教给了我------直接把实验题目复制到Trae,然后根据生成的结果继续和它说

我试了一次,就再也回不去了。

从前是人适应框架,现在是"AI 帮你搭好架子,你只管填逻辑

我从此一发不可收拾------课程设计提前完成,还顺手加了用户登录、分页查询、响应式布局。

更关键的是,我第一次觉得,编程不是苦力,而是一种指挥与协作的艺术

这和下面要聊的 vibe Coding 密切相关。


vibe Coding 三大阶段

vibe感 的第一阶段 用一两句话来描述需求

当然,上面的行为我还是不推荐的------作业终究还是要自己认真写,基础不牢,地动山摇。

我之所以分享这段经历,并不是鼓励直接"交AI代劳",而是想说明:工具本身没有对错,关键在于你怎么用它

我上面使用的方法,其实正是 Vibe Coding 的第一个阶段:用一两句话描述需求

比如"帮我在这个 Spring Boot 项目里加一个根据用户名查询用户的功能"或者"在现有的 Vue 页面上加一个清空购物车的按钮"

这种用法,在我的大学生涯里更多出现在课堂作业中------老师给了基础源码,我们拉取下来后,直接在AI编辑器(比如Trae)说:"我要实现 XX 功能",AI 就能快速生成符合项目结构的代码片段。

当然,我并不是直接照搬------每段 AI 生成的代码我都会读,不仅看它怎么写,更琢磨它为什么这样写。

所以,哪怕只是"一句话 prompt",只要带着学习的目的去用,Vibe Coding 的起点,也可以是扎实成长的开始。


vibe感 的第二阶段 设计prompt

当然,上面那种"一两句话句话生成"的方法打打常规赛还行,

但一到"季后赛",比如期中课程设计,学校请来了某马的老师现场检查作业,情况就不同了。

来的不是只看结果的大学老师,而是真正在公司干过开发的年轻讲解老师。这时候,光靠 AI 堆代码就行不通了,我们的打法就得偏"欧美"一点了:结构清晰、命名严谨、注释到位、逻辑可追溯------毕竟,人家一眼就能看出代码是"手搓的"还是"糊弄的"。

具体该怎么做呢?

关键在于升级提示词

  1. 我们可以先赋予 AI 一个明确角色,比如"资深全栈工程师"

  2. 再说明项目结构(文件该放哪儿)、代码规范(ES6、TailwindCSS、RESTful 等)

  3. 接着清晰描述当前需求,提供必要的上下文(如技术栈、已有模块),并指定输出格式(完整文件、逻辑片段或带注释的代码)。

相比第一阶段的随机抽卡,这时的提示词更专业、更系统,本质上是用工程语言引导大模型,把模糊想法拆解为可执行任务,从而精准控制 Vibe Coding 的产出质量------从"碰运气"迈向"可预测"。


vibe感 的第三阶段 多Agent协作

到了第三阶段,其实就和完成大学作业没什么关系了。

Vibe Coding 不再是"人 + AI"的单打独斗,而是演变为一套多 Agent 协作的自动化开发流水线

在真正写代码之前,先让 AI 扮演不同角色,按专业流程依次推进:

举个例子:我们要做一个微信记牌小程序。

首先,在微信开发者工具里新建一个项目。

接着,用 Gemini 3 帮我们生成一份高质量的 Prompt(具体怎么访问 Gemini 自己想办法)。输入两段引导性提示:

ini 复制代码
你是一个大师级的微信小程序产品经理,我现在需要你帮我把想法变成需求文档,用于给到AI编程工具进行实现:
ini 复制代码
我们需要先讨论一下需求,等确定了所有的需求,我们在进行第二步

根据你的具体想法,AI 会输出一份高度结构化、可直接用于工程落地的 Spec。不同的人输入,得到的 Prompt 也不同------这才是真正的个性化协作。

比如,你可能会得到这样一份提示词:

ini 复制代码
Role: Expert WeChat Mini Program Developer
Task: Create a standalone scoring Mini Program (offline-first).
Language: JavaScript (Native WeChat Framework), WXSS, WXML.
1. Project Context (项目背景)
这是一个用于线下桌游(麻将、扑克)的通用记分工具。
核心逻辑:基于"零和游戏"规则(Zero-Sum Game),即每局所有玩家的得分之和必须为 0。
运行模式:单机版,无后端,所有数据存储在本地缓存(LocalStorage)。
用户:通常由其中一名玩家操作,记录所有人的分数。
2. Tech Stack (技术栈约束)
Framework: Native WeChat Mini Program (原生开发).
Styling: Standard WXSS (Flexbox layout). Minimalistic design.
Storage: wx.setStorageSync / wx.getStorageSync.
Logic: No external dependencies. Pure JS logic.
3. Data Schema (数据结构设计)
Please strict follow this JSON structure for LocalStorage key game_history.
code
JSON
[
  {
    "id": "uuid_v4_string",          // 唯一牌局ID
    "name": "2023-10-01 欢乐麻将",    // 牌局名称
    "createTime": 1696123456789,     // 创建时间戳
    "playerCount": 4,                // 玩家人数 (2-6)
    "players": [                     // 玩家列表
      { "id": 0, "name": "张三", "totalScore": 10 },
      { "id": 1, "name": "李四", "totalScore": -5 },
      { "id": 2, "name": "王五", "totalScore": -5 },
      { "id": 3, "name": "赵六", "totalScore": 0 }
    ],
    "rounds": [                      // 对局记录流水
      {
        "roundId": 1,
        "timestamp": 1696123500000,
        "scores": [10, -5, -5, 0]    // 对应 players 数组索引的分数变化
      }
    ]
  }
]
4. Page Flow & Requirements (页面逻辑)
Page 1: Home (首页 - 牌局列表)
UI:
Show list of saved games (Name + Date + Player names).
If list is empty, show a placeholder image + "Create New Game" button.
Floating Action Button (FAB): "+" to create a new game.
Interaction:
Click item -> Go to Page 3 (Scoreboard).
Long press item -> Option to Delete game.
Page 2: Create Game (新建牌局)
UI:
Input: "Game Name" (Default: Current Date + "Game").
Selector: "Player Count" (Range: 2 to 6, Default: 4).
Dynamic Inputs: "Player Names" based on count (Default: P1, P2, P3...).
Logic:
On "Start": Initialize the data structure and save to LocalStorage, then redirect to Page 3.
Page 3: Scoreboard (计分看板 - 核心页)
Header:
Grid layout showing current totalScore for each player.
Highlight the winner (highest score) in Red, loser in Green.
Body (List):
Reverse chronological list of rounds (Round 10, Round 9...).
Show specific score changes for that round (e.g., +10 | -5 | -5 | 0).
Delete Function: Allow deleting the last record only (to prevent logic errors).
Footer:
Large Button: "Record Round" -> Opens Page 4.
Page 4: Input Score (记分录入)
UI:
List of players. Each row has: Player Name + Input Field (Number).
Auto-Balance Button: A button next to the last player or at the bottom.
Logic: Calculates 0 - (Sum of other players) and fills the remaining field.
Validation (Strict Zero-Sum):
Before saving, check: Sum(scores) === 0.
If Sum !== 0, show Toast error: "Total score must be 0! Current: +X".
Allow input of 0.
Save:
On success: Update players.totalScore, push to rounds, save to LocalStorage, go back to Page 3.
5. Edge Cases (异常处理)
Input Type: Ensure inputs handle negative numbers (keyboard type usually digit or number allowing -).
Empty Input: Treat empty input as 0.
Data Persistence: Update LocalStorage immediately after every round addition/deletion.

然后,打开你喜欢的 AI 编辑器(比如 Trae、Cursor),把刚才新建的空项目文件夹拖进去,把这份 Prompt 粘进去,让它开始生成代码

然后得到了这样的结果。这本来也不是干货博客,这里我们主要看这个prompt和生成的代码。

你会发现:它生成的代码结构清晰、逻辑严谨、注释到位,甚至考虑了零和校验、本地存储格式、边界输入处理等细节。

这已经不是"帮我写个功能"了,而是"按生产标准交付一个模块"。

而且说实话------这份 Prompt,确实比我手写的要好得多

我们可以看到:整个过程强调规矩、专业、流程化 ,不再是随意生成,而是以 Spec 为唯一权威源------这就是 Spec-Driven Development(规范驱动开发,SDD) 的核心理念:先写清楚"要做什么",再让各角色围绕规范协同履约。

此时的 Vibe Coding,已接近生产级标准:可审计、可追溯、可迭代 。AI 不再是第一,第二阶段的prompt抽卡机,而是一支训练有素的虚拟工程团队------你只需担任"技术负责人",把控方向,协调节奏,确保每个 Agent 都在正确的轨道上交付高质量产出。

这里我要强调一个概念:SDD

SDD(Spec-Driven Development,规范驱动开发)

是一种以清晰、可执行的规范为起点和唯一权威的开发范式------先写好"合同",再让代码履约。

在 Vibe Coding 的第三阶段,SDD 成为核心:AI 不再凭语义的模糊指令自由发挥,而是围绕一份由虚拟产品经理产出的结构化需求文档(Spec.md),依次驱动设计、编码与测试,确保每个环节都严格对齐同一份契约。

和"先写代码再补文档"不同,Spec-Driven 强调代码必须严格满足规范,而不是靠口头理解或临时修改。这样做的好处是:需求更清晰、沟通成本更低、返工更少,也更容易做自动化测试。

AI 也不再是魔术师,而是一个守规矩的协作者。

总结

整篇博客,我都是以一个普通在校学生的视角,讲了自己怎么从"手敲 CQ 外卖"一步步走到用 Vibe Coding 搞定课程设计的过程。

一开始是被课程设计逼到墙角,偶然看到同学用 Trae 几分钟跑通了我熬一晚上都搞不定的逻辑;后来慢慢发现

AI 不是用来抄答案的,而是用来放大你的工程思维的。

而这一切能真正落地的关键,就是 SDD(Spec-Driven Development)

它让我明白:未来最有价值的程序员,可能不是写代码最快的那个,而是能把需求翻译成清晰、可执行规范的那个人。

Vibe Coding 不是取代我们,而是让我们终于可以像真正的工程师那样工作------不靠蛮力,而靠指挥系统。

而这,或许才是编程本该有的样子。

2025年是Agent 元年,不管下学期我会偷偷跑去哪家公司实习,我都会继续拥抱最前沿的技术。

相关推荐
KEEN的创享空间16 小时前
AI编程从0到1之10X提效(Vibe Coding 氛围式编码 )09篇
openai·ai编程
AlienZHOU17 小时前
为 AI Agent 编写高质量 Skill:Claude 官方指南
agent·ai编程·claude
恋猫de小郭17 小时前
移动端开发稳了?AI 目前还无法取代客户端开发,小红书的论文告诉你数据
前端·flutter·ai编程
KaneLogger19 小时前
【翻译】打造 Agent Skills 的最佳实践
agent·ai编程·claude
王小酱19 小时前
Everything Claude Code 文档
openai·ai编程·aiops
雮尘20 小时前
如何在非 Claude IDE (TARE、 Cursor、Antigravity 等)下使用 Agent Skills
前端·agent·ai编程
刘贺同学20 小时前
Day12-龙虾哥打工日记:OpenClaw 子 Agent 到底看到了什么?
aigc·ai编程
程序员鱼皮1 天前
离大谱,我竟然在 VS Code 里做了个视频!
github·aigc·ai编程
Kayshen1 天前
我用纯前端逆向了 Figma 的二进制文件格式,实现了 .fig 文件的完整解析和导入
前端·agent·ai编程