首次 Vibe Coding,我学到了什么

在大家都在晒Vibe Coding作品时,我也花了一周的时间开发了一款下载器的GUI应用。在尝试过后,我发现,普通人想要借助AI完成一个真正的“产品”,依然很难。

开发原因

yt-dlp是知名的下载视频的工具,不过,它的安装步骤和使用方式对大部分人来说,有一定的门槛。目前有一些网页支持输入视频链接就可以下载,但有时候网页要么打不开,要么下载速度慢。

于是,我尝试在GitHub上找一些yt-dlp GUI项目。结果是,大多项目好几年没更新,无法使用,可以使用的项目UI交互比较复杂,也不够美观,所以我决定自己借助AI,开发简单易用的yt-dlp的GUI应用——DLP-GO

Media Downloader
Media Downloader 界面

看到以下编程名词很困惑的的朋友,可以直接跳到总结部分阅读。

最初设想

我开始的时候就计划选择比较简单的方案,将上面Media Downloader的项目UI美化一下,功能简化,实现两个主要功能:

  1. 在主界面粘贴视频链接下载
  2. 通过Chrome插件,在网页显示下载按钮,一键发送到应用并后台下载

但上面的项目是用C++语言和QT框架实现的,AI告诉我,重新改界面和下载功能,工程量会比较大,建议我用python+html重新从零开始创建,虽然我不是很懂,但我还是决定听AI的。

环境配置

git

但凡编程,注定绕不过git。我个人对git的理解是,git可以完美更新或降级代码版本,极大程度省去了管理代码版本的成本。当我使用git后,我发现git可以用在代码之外,比如写作和配置文件管理,不得不说,git是一个伟大的发明。

调试环境

每种编程语言都需要特定的环境来调试,例如,python需要安装一个轻量级的运行工具,html需要webview(一般系统自带)来渲染,而C++ 配合 Qt 框架 的开发环境(SDK)非常沉重,包含编译器和各类工具链后往往高达 10GB 以上。新手编程可能首先卡在安装环境,因为下载环境的速度可能会很慢。

CLI vs. IDE

在使用了CLI命令界面和IDE界面编程后,令我意外的是,CLI的开发效率更高,排错也更快更准确,可能是因为少了IDE的一些限制“跑”得更自由了。但目前我觉得IDE依然有它的优势在,在查看代码差异和小修小补方面,使用IDE会更好一些。

关于编程使用的AI,我最开始用的VS Code自带的Copilot,50次/月的额度一晚上就用完了,整体感觉能力和速度都不错,后面用Qwen的模型,感觉排错能力不够强,最后用了Codex,除了稍微会慢一些(macOS上的GPT 5.4提升了速度),能力和Copilot感觉差不多,关键是,ChatGPT Team自带的Codex额度对我来说非常够用。

制定计划

一开始上手AI编程,看着AI自动写代码,只需要点几下同意AI的权限申请,感觉非常轻松惬意。但到了后面,想到的功能就立刻让AI加上去,加了按钮,发现没反应,然后去修复后端;测试语言显示不正常,去增加相关语言的翻译;UI布局不满意,修改元素的位置和大小。
这种没有计划的无脑编程,给我造成了强烈的混乱感。于是,我开始把我的开发需求告诉AI,让它去规划整个流程,这是AI给我的方案:

  • 第一阶段:核心逻辑层
  • 第二阶段:通信协议层
  • 第三阶段:国际化与配置架构
  • 第四阶段:UI 界面层
  • 第五阶段:Chrome 插件开发

以上是简略的说明,有了这样的规划后,对整体流程有个大概的认知了。

对于新手来说,前端(UI界面)是最快能看到成果也相对比较简单的部分,所以我很多时候是先在前端加功能按钮,再在后端补逻辑代码,这么做当然不规范,但有了AI的帮助,只要描述清楚需求,让它去分析怎么落地就够了。

删减功能

在第四阶段尾声的时候,我在犹豫要不要加上Chrome插件的功能,加上这个功能会对下载体验加分,但是在 软件安装的时候,需要引导用户去安装这个Chrome插件,还要手动打开软件里的“静默下载”开关,这多少提高了用户的使用门槛;另外一个点,用户不一定需要对每个视频进行下载,一直有一个下载图标在那里,并不够优雅。

令我放弃这个功能除了修bug修得心烦外,核心原因是我认为用户下载视频的频率不高,虽然我没有去调研数据,但从我自己和朋友们的下载情况来看,下载视频的频率可能一周/月就几次,为了做这样一个低频使用的功能不太值得。如果后期有许多人关注或下载,到时再加上也不迟。

关于“设置界面”(图片见上),开发好了,最后被我删除了,因为除了下载目录设置,其他都可以自动或者默认设置,语言根据系统语言设置,画质默认最高(现在很少人愿意下载次高清的视频),并设置在软件启动时自动检查更新。
setting
设置界面

这可能看起来没有给用户太多的选择,但我的核心目的就是给用户提供一个简单易用且相对美观的视频下载器,用户安装打开,不需要阅读说明书就能使用。

ui
最终的界面

遇到的其他问题

macOS开发Windows应用

在macOS上开发核心下载逻辑、软件功能和UI没有太大问题,但是实际要打包调试,还是要回到Windows,对于只有一台Macbook的我,调试还要去跑到图书馆,重新在Windows上安装好环境调试再修改,实在是太麻烦了,而且在Windows安装环境也没有macOS命令行方便。所以,如果下次我想开发一个应用,应该只会开发macOS 的应用。

下载暂停问题

暂停功能我调试了几次,都没有解决“按钮失灵”的bug,这和yt-dlp有关,后面我放弃了。这个功能也不是什么致命缺陷,目前能正常下载就够了。不过这也暴露了我的知识储备不足的问题,当试过挂起进程和杀掉进程都无效,并且ai也给不出什么好的方案时,这个bug暂时无法解决。

Windows拦截安装

受限于 Windows 的安全机制,未经签名的二进制文件会触发系统预警。考虑到代码签名证书(Code Signing)的高昂维护成本以及独立开发的性质,我选择维持现状,由用户手动授权运行。

总结

我上次编程还是在大学,用C语言写“Hello World!”和“循环函数”这些简单的代码,我个人并不怎么喜欢编程,语法结构复杂,而且经常报错给我带来了糟糕的体验。AI编程出现后,的确降低了个人开发的门槛,普通人也能编程,但在完成这次应用开发后,我发现,想要用AI完成一个产品没那么简单。

很多自媒体博主会演示,将一段指令丢给AI,然后几分钟后AI就做好了一个小游戏。这让我们产生一个错觉,开发一个产品很容易,但其实这只是demo,并非产品。

我在开发完应用后,看到了“李自然说”发布的视频Vibe Coding实战复盘:做玩具容易,做产品难,深有同感。demo就像玩具,自己玩玩可以,出错了也无所谓,但一个产品,往往需要考虑稳定性、用户体验、UI审美、安全问题和后期维护等等,一个没有相关经验的人很难开发出好用和好看的应用。

土豆当年的Slogan是“每个人都是生活的导演”,这是鼓励每个人拿起手机或者相机来拍摄视频,然后发布上传。但问题是,普通人离导演的距离非常远,拍出来的画面可能角度是斜的,光线是过曝的,画质是粗糙的,这些作品大部分都是劣质的(当下的短视频同样如此)。我并不是在贬低他们,而是想表达,个人的知识水平、审美水平和逻辑能力,是决定产品质量的上限。

AI实际是一个放大器,将人与人之间的差距进一步拉大。我也是在这次Vibe Coding后认识到自己的局限,换作专业开发者,一定比我做得更快更好,但这件事让我学习到很多概念,并扩展了我解决问题的思维。很多时候,只有自己实际上手操作了,才会对自我有更多的认知,对事物有更深的理解。