Vibe Coding小白向指南--动动嘴就可以写代码

前言

作为一个基本不太会手搓代码但又喜欢自己折腾的产品经理,之前一直很苦恼于很多想要实现的功能没有合适的APP能做到,别人的APP又没办法随心所欲地提需求(毕竟需求提多了容易被开发打!)。所以在AI出来之后,我就很关注AI-Coding工具的发展,一直想着可以自己写一个自己想要的APP出来。

2023年智谱清言刚推出CodeGeeX时候,我第一时间申请了内测。但那个时候还基本只能做代码补全,对我这样的小白来说,写一个开头让AI接着写难度还是很高,于是乎只能继续等呀等,直到过去的这一年,AI-Coding的能力和相关的工具有了长足的进步,某一次的尝试中突然发现,靠提需求去写一个APP,好像也没有那么难了,那就整起来吧,于是乎,我就这样开起来自己“用嘴编程”之路。

从开始尝试自己写APP到现在,做出来了四个不同的方向的APP,这里拿一个最近在写的火车票记录的软件做一下分享,讲一讲我做这个软件的目的,以及整个过程。

开发过程

Vibe Coding工具箱

首先花一点篇幅,稍微介绍一下我使用到的工具:

  • IDE:Antigravity(Google)和VSCode(Microsoft) // 相较于纯命令行的那些工具,例如ClaudeCode、CodeX,我个人还是比较喜欢带UI的IDE,上手难度还是要简单不少,Debug的难度也要低不少。
  • 模型:Opus4.5/4.6、Gemini3Pro和GPT-5.3-Codex // 个人习惯:GPT用来梳理思路和写文档,Opus用来写主要的代码,Gemini用来做UI和UE。
  • 编程语言和框架:flutter+dart // 因为我一直想写的是APP,本身自己的设备又有 windows 和 mac,所以在最开始的时候就选定了 flutter+dart 的组合,一套代码就可以搞定各个客户端,对小白更友好。实际上选择哪种常见的编程语言对AI来说区别都不是很大。
  • 后端:Appwrite // 选择这个是因为不需要自己再去费劲搭后端实现各种逻辑,不需要去维护服务器,免费的额度对于写个APP给自己用的需求来说完全够了。倘若后续真的做大做强了,迁移到自建的Appwrite上也很容易。
  • UI:Material 3 Expressive // 因为我自己的主力机是 Android 且比较喜欢原生的风格,所以无脑地选择了MD3E的设计风格,文档比较丰富,对AI来说也比较好理解和好实现

PS:IDE的选择其实也有很多,国产的IDE我基本都尝试过,大致可以分为两类,传统的VSC的套壳和新的ClaudeCode套壳,功能都大差不差,甚至各家的会员价格好像都是类似的。核心的区别在于支持模型的种类和数量不一样。

至于我为什么选择了 Anti 和 VSC,主要是因为我白嫖了这两个的会员,所以可以基本上无限制使用海外的模型。

PPS:在我写这篇文章的时候,GLM5发布了,看测评还是不错,但我还没有实际尝试,因为我的Lite版本套餐暂时还不支持GLM5

需求

有了趁手的工具是第一步,接下来就要厘清楚,自己想要的到底是什么?在入门产品经理这个岗位的时候,我看过一本书《人人都是产品经理》,书的好坏不做过多的评判,但至少我觉得这个名字取得不错。

做产品最怕住不住用户的需求,但当产品和用户这两个角色合而为一的时候,弄清楚自己的需求就要简单很多了。

一般我会先问自己三个问题:

(1)你最想要实现的那个功能是什么?为什么想要实现这个功能?
(2)这个功能现在有没有类似的开源项目(或者成熟软件)已经实现了?
(3)如果为了这个需求去学习一套新的技术栈(或者投入大量时间Debug),它的边际效应还高吗?

对于我们这种“Vibe Coding”玩家来说,效率和情绪价值是第一生产力。如果一个需求需要我从头去啃底层的语言,那我就放弃了;但如果只是让我把业务逻辑讲清楚,剩下的交给AI,那这个投资回报率就是无限大。

在这个火车票记录软件的例子里,我的答案很明确:

核心功能: 自动解析12306的信息,生成精美的行程卡片。12306没有纸质车票可以收藏了,12306本身又只记录30天内的订单,所以我希望有一个APP可以像以前一样保存下来我所有的车票)。
竞品分析: 市面上的APP,基本都是iOS的,Android的几乎没有。
投入产出: 我不需要学正则表达,不需要学Flutter的底层渲染原理,我只需要会“说话”,后续使用只要会复制粘贴就好了。

想清楚了这三点,就可以正式开工了。

思路

很多人觉得AI编程难,其实不是难在代码,而是难在如何把模糊的想法转化为精确的指令。而这,恰恰是我们产品经理的老本行--写PRD(我觉得现在已经被AI替代了90%)。在 Vibe Coding 的世界里,Prompt 就是你的 PRD。我个人的经验是,不要上来就对AI说:“帮我写个火车票APP”。这就像你对开发说“给我做一个淘宝”一样,会被打出来的。

通常有了明确的需求,我的下一步就是拿着这个需求去找AI,做角色的换位思考,让他站在产品经理的角度,对你这个用户的需求进行提问,你思考之后给出回答。一般3-4轮的对话之后,AI没有了继续追问的问题,就可以让AI输出一份markdown格式的产品需求文档,明确第一版要开发的功能、技术路径、前后端以及需要建立的数据库字段。这份文档作为后续开发的核心。

贴一个我现在正在做的车票收藏的PRD节选,做个参考。

# XXXX 产品设计文档 (PRD) v2.0

## 1. 项目现状与目标
* **当前进度**:
    * ✅ **用户认证**: 登录/注册流程已调通。
    * ✅ **个人中心**: "我的"页面 UI 及基础交互已完成。
    * ✅ **App 框架**: 底部导航栏 (BottomNavigationBar) 及 3 个主 Tab 页面框架已搭建。
    * ✅ **后端**: Appwrite 数据库 (Schema/Indexes/Permissions) 已部署完毕。
* **本阶段目标**: 完成核心业务逻辑,包括行程展示、票夹堆叠效果、地图轨迹绘制以及“添加行程”的完整闭环。

---

## 2. 信息架构 (IA) & 导航

### 2.1 底部导航栏 (BottomNavigationBar)
包含三个核心 Tab(已存在框架,需填充内容):
1.  **行程 (Journey)**: `[Icon: train]` - 侧重“待办”,展示即将出发的车票。
2.  **票夹 (Wallet)**: `[Icon: ticket]` - 侧重“收藏”,展示历史车票堆叠。
3.  **地图 (Map)**: `[Icon: map]` - 侧重“足迹”,展示可视化轨迹。

Coding

项目初始化

既然已经让AI生成了PRD文档,那就可以继续让AI干点活,把系统提示词也一并生成了。这个系统提示词和你在之前Vibe Coding中积攒下来的一些好的经验,可以一并写到项目根目录的某个md文件中,并在后续的对话中都提醒AI去看一看,这样可以确保AI严格按照你的需求进行实现。功能实现时,也不要期望AI可以一次性把所有的代码都写完,可以“总-分-总”的形式,先搭框架,再依次实现其中的功能,最后让AI进行review。

对于我举例的这个APP来说,其中的一个功能点是解析12306的邮件。如果是以前,我得去查半天正则表达式,现在我只需要把一封真实的邮件内容(注意隐去隐私信息)扔给GPT-5.3 或者 Opus4.6:

输入数据: [粘贴一段12306的购票成功邮件正文]
需求: 请写一个 Dart 函数,能够从上述文本中提取出:出发站、到达站、车次、发车时间(精确到分)、座位号。
异常处理: 如果格式不匹配,返回 null 并打印错误日志。

你会发现,AI 写这种逻辑代码比人类快得多,而且它能考虑到很多你没想到的边界情况。

第一阶段:先跑起来再说(MVP)

别管好不好看,先把功能跑通。我用Opus模型快速生成整个APP的框架。这时候的界面可能很丑,按钮是方的,颜色是蓝色的默认色,文字全都挤在一起。没关系,能跑就行。 只要点击“导入”,能看到数据出现在屏幕上,第一阶段就胜利了。

第二阶段:调整“Vibe”(UI/UX)

这是 Vibe Coding 最爽的时刻。我通常会切换到Gemini3Pro模型,因为它对多模态图片的理解能力极强,然后结合截图进行修改。我会直接截一张现在的丑图,并在旁边贴一张我喜欢的设计风格,然后对 AI 说:

看这张截图,现在的卡片太生硬了。请参考右边的设计风格:
- 所有的设计修改遵循 MD3E 的设计风格。
- 给卡片加上圆角,半径设为 16。
- 使用 Surface Container High 作为背景色。
- 把‘出发时间’字体放大加粗,用 Primary Color。
- 也就是所谓的‘Vibe Check’,让它看起来更 Modern 一点。

你会看着你的代码编辑器自动疯狂删改,然后Hot Reload一闪,手机上的APP瞬间就从上个世纪的产物变成了你想要的风格。

第三阶段:抓虫与优化

当然,AI写的代码不是完美的。偶尔会出现点击没反应,或者数据加载不出来的情况。这时候,Debug 的方式也很简单:直接把控制台红色的报错信息或者APP上的错误提示复制给IDE的Chat窗口,然后告诉他有了这个报错,请帮我修复。通常它会立刻道歉:“对不起,我忘记了XXXX,这是修复后的代码”

成果展示

以下内容皆属于半成品,但也可以用了。

行程页面(未出行)票夹页面(已出行)
行程导入(从12306邮件)行程分享(UI未优化)

结语

写这个火车票APP前后大概花了四五天的碎片时间。当我在打开自己写的APP,看着它识别出了我刚才收到的邮件,并生成了一张漂亮的行程卡片时,那种成就感是以前单纯提需求完全无法比拟的。

我相信Vibe Coding 不是让 AI 替代程序员,而是赋予了我们每个人成为产品经理的能力。你不需要懂指针、内存管理,你只需要懂你的生活和你想要的产品。既然工具已经准备好了,为什么不动动嘴,把那个在你脑海里构思了很久的想法,变成现实呢?

(本文项目思路仅供参考,Enjoy Coding!)

添加新评论