
写在前面
大家好,我是 dtsola,一名IT解决方案架构师,同时也是一人公司实践者。
作为独立开发者,AI编程工具已经成为我日常工作中不可或缺的一部分。最近,我关注到一位国外独立开发者 Dreams of Code 通过视频分享的30天Vibe Coding实战经验,看完之后深有感触——他遇到的问题、总结的方法论,几乎都是我在实际项目中真实经历过的。
这让我们意识到,AI编程并非万能,但也绝非噱头。这30天的实验回答了很多开发者关心的问题:
AI编程在真实项目中到底靠不靠谱?
遇到问题时该如何解决?
如何建立高效的AI协作工作流?
我认为这些经验非常值得分享给更多的独立开发者和技术从业者。只有真正理解AI编程的实践方法和应对策略,我们才能更好地"驾驶"这个强大的工具,让它真正为我们赋能。
因此,我整理了 Dreams of Code 的这次实验经历,结合我自己的实践体会,希望能帮助大家建立对AI编程更加清晰、务实的认知。
配套视频:https://www.bilibili.com/video/BV1nEC5BUEj1/
目录
前言
准备工作:制定规则与计划
基本规则
项目规划
工具选择
第一周:学习委派的艺术
第一个难题:成本控制
代理半衰期问题
角色转变:从开发者到技术负责人
学会放手
第二周:扩展与适应
首次生产数据库迁移
UI/UX设计挑战
安全考量
意外的生产力提升
生病期间的生产力
第三周及后期:优化与深化
技术栈适配问题
从零构建新项目:zenblog.ai
解决AI单一化问题
遇到边界:FFmpeg WASM问题
工作流程优化
多代理并行工作
自动化流程
硬件选择
多任务处理的艺术
总结与展望
个人收获
对软件开发未来的看法
工具态度
关键建议
核心结论
前言
过去30天里,Dreams of Code 在开发软件时完全采用所谓的"氛围编程"(vibe coding)——一行代码都不写,完全交由AI来完成。如果你一直关注他的内容,可能会意识到这与他平时的开发习惯有着天壤之别。事实上,他在文本编辑器里从不使用AI助手或编程副驾驶,而是坚持手动写代码。
那么,基于这一个人偏好,为何他过去一个月不仅在使用AI,还把所有代码都交给它写?
和他认识的多数开发者一样,当他第一次听说vibe编码时,觉得这听起来很荒谬。他不仅怀疑它只能做出简单的玩具应用,还假设它只会生成充满漏洞的代码——最坏情况下包含多个高危漏洞,最好情况下也会给未来开发者留下维护难题。
但尽管有这种先入为主的看法,他仍自认思想开放。现实中,一些资深开发者声称在使用AI代理方面取得了显著成效。于是他决定挑战自己的假设,深入理解这一实践,判断其是否可行,以及它如何影响软件开发的未来。
准备工作:制定规则与计划
在开始沉浸式编码前,他先制定了明确的规则和计划,以便全身心投入这一新实践。
基本规则
他决定在30天内,所有与SaaS产品、生产服务及内部工具相关的代码,以及出于提升效率而需创建的内容,都将通过LLM代理完成。但他列出了三种例外情况:
关键漏洞修复:若遇到需及时修复的关键漏洞,可以手动处理
学习新技术:如果想学习或理解一个新概念,比如一门语言或框架,允许自己动手学习
YouTube内容:视频制作相关的工作除外
项目规划
为了全面测试vibe编码在现实场景中的能力,他想确保能用多个不同项目来测试不同的生命周期。他计划涵盖三个主要场景:
现有项目维护:在生产环境运行的项目,包括修复漏洞和添加新功能
项目重写:将现有项目转向新语言或框架,比如从Go转到Next.js
全新项目:从零开始开发一个全新的项目
工具选择
在工具选择上,他首先考察了Cursor——如今似乎人人都在用它。但就他个人而言,Cursor不太合适。不知为何,他无法接受这种编辑器与代理混合的模式。既然他只想专注纯编码,去掉编辑器就成了必然选择。
于是他决定放弃Cursor和Windsurf,转而选择更符合个人偏好的方案:Claude Code——一款在终端运行、基于本地机器的AI代理。对他来说,用终端配合tmux和命令行工具,再加上Claude Code,流程非常顺畅。事实上,它太棒了,让他用它做出了一些很酷的东西。
第一周:学习委派的艺术
挑战已明,武器已选,他已准备就绪接受首次氛围编程挑战。
第一个难题:成本控制
由于起初对生成的代码质量存疑,他决定从重写他的Code Dream网站开始——这是最稳妥的项目,将前端从Go迁移到Next.js。
但第一天开始时,他就遇到了第一个问题:费用。他的Anthropic余额只剩25美元,不知为何,他原以为能撑过一整天。但实际上,他只撑了大约两小时就收到邮件通知余额已耗尽。
启动Python交互环境进行一些高级计算后,他意识到两小时花费25美元的话,八小时编码日薪约100美元,30天总计约3000美元。哎呀,和会计快速商量后,他得出结论:这确实不划算。
最终他决定升级到每月100美元的Claude Max套餐,使用限额更高。事实证明,他从未超出100美元套餐的限制,尽管后来同时处理三个项目时曾接近上限。考虑到他实际完成的工作量,这30天下来,他甚至觉得每月100美元简直是捡便宜。
代理半衰期问题
随着无限编码能力的解锁,他终于可以开始输出代码了。但可能有点过头了,因为他不断遇到自认为的第一个在氛围编程方面的主要难题。
这就是大模型在持续运行后开始衰退或耐力耗尽的现象——他每次让代理在实现一个全新功能时,尽管最初方向正确,但实施时间越长,偏离预期就越严重。最终,这种偏离不仅导致实现出现缺陷,有时还会影响他不想让大模型改动的其他代码区域。
起初非常令人沮丧,但经过研究发现,这在大模型执行长期编码任务时是一个有据可查的问题,被称为**"代理半衰期"**——代理执行任务时间越长,准确度就越低。
然而,读完这项研究后他意识到,这并非仅影响大模型的现象。他自己也常在处理范围过大的功能时写出垃圾代码。对他而言最有效的缓解方法是吃点零食或喝点提神饮料,但这种方法用在大语言模型上不太管用。
幸运的是,还有其他有效的策略:将大功能拆分为小而易行的任务。
角色转变:从开发者到技术负责人
这让他首次意识到,尽管氛围编程与以往的编码方式有本质不同,却很像团队中的技术负责人,只是用AI代理替代人类团队成员,自然也有其优缺点。
基于这一新认识,与其让Claude实现整个功能从零开始,他转而决定像拆分任务交给更初级的工程师一样来处理。这种工单编写方式最终成为关键。他发现Claude更擅长生成这些具体任务,任务顺利完成,而且由于改动变小,他更容易验证实际变化。
学会放手
几天后采用这种新方法,他成功实现了与Code Dream网站功能的对等,用原来实现所需时间的一小部分就完成了。不仅如此,Claude还解决了他最初实现时遇到的多个问题,甚至针对原始代码做了一些改进。
尽管如此,仍常出现Claude会生成完全无用内容的情况。但幸运的是,现在他不再担心成本问题,他可以直接用提示解决,或用一条简单的git命令彻底清除代码重置。
但最大的教训是学会放手。起初,他确实担心自己对代码库本身理解不足。他一直引以为傲的是对代码有清晰的整体把握,以及遇到bug时该从何处入手。
至于vibe coding,他对代码库本身没有清晰的结构概念,起初感觉有些不对劲。但当他开始接受这种感觉后,才意识到其实根本不需要它。若需查找代码,他可使用熟悉的命令行工具,或直接让Claude解释。
这种思路也延伸到了调试。每当出现bug或问题时,不再直接深入查明根本原因,他只需直接发送所有相关信息——包括预期行为与实际表现的差异,以及控制台中可能出现的任何错误日志。
这种方法大部分很有效,Claude能利用他提供的信息解决问题。虽不完美,有时会经过几次提示才达到目标,但大多数情况下,他不需要深入实际代码。
总体而言,第一周对他来说就像一堂学习委派的实践课。尽管开局有些坎坷,但第一周结束时他最终还算高效。毕竟,功能对等已在他认为的最短时间内实现。
第二周:扩展与适应
在实现功能对齐后,他决定用最短时间推进下一任务,即为这个Next.js重写扩展全新的功能——管理后台。
首次生产数据库迁移
这不仅是全新功能,还要求进行一些数据库修改,这意味着他将首次以这种方式调整生产环境。因此,他充分测试并审查了这些变更,尤其是现在需添加新的SQL迁移来支持新的管理员角色。
这也得益于他的PostgreSQL服务商Neon,因为他能够分支生产数据,确保不会在真实生产环境中引发任何问题。尽管大模型在执行数据库迁移时表现良好,但让他觉得不太理想的是设计用户界面时的表现。
UI/UX设计挑战
每当实现新功能的用户界面时,他发现大多数时候,Claude倾向于功能重于形式。虽然后台管理界面这样没问题,但涉及面向用户的功能时,这有时会是个问题。
但通过与其他同时使用Claude Code的开发者朋友交流后发现,这很常见。一旦明白这个限制,问题就迎刃而解了。办法是像团队协作一样来处理这个问题,但这次不是与初级工程师合作,而是与初级UX/UI设计师协作。
因此可要求其迭代优化生成的设计。此外,你还可以提供图片供Claude Code参考,他发现这往往时好时坏。用图像的最佳情况往往是发现视觉错误时,但也可用来让Claude参考各种设计。
最有效的方法是当他构建多个相关产品时,他会让Claude参考一个现有的落地页来保持风格基本一致。
安全考量
除用户界面外,他在vibe编码方面另一个主要顾虑是应用安全,尤其是这似乎是反对者最主要的担忧之一。
经过几周的vibe编码实践后,他对这一问题的担忧减少了。目前他认为这些安全担忧在一定程度上是转移注意力的。并非因为它们不存在——它们确实存在,而是因为手写代码同样存在这些问题。
因此,他发现降低安全风险的最佳方法就是主动防范,就像与其他可能不了解安全最佳实践的开发者合作一样。既要充分了解应用安全,同时务必审查已知可能存在问题的代码。
因为几乎可以肯定,Claude最终会做出不安全的操作。在他遇到的情况中,Claude常会启动一些测试端点,这些端点有时是向全世界开放的,用于测试邮件发送或其他他不希望被公开的操作。
后来他发现,建立静态分析自动化很有价值,比如linters和安全扫描软件如Trivy。
这次遇到的安全问题和bug数量,让他意识到,或许表明软件开发岗位将最受影响的会是安全——即使我们编写代码的方式可能有80%会改变,他预计会将智能AI视为需要监督操作的工具,或更像一个能协助处理编写良好任务的额外团队成员。
意外的生产力提升
开始看到vibe编码带来的益处后,很快他就发现了这种做法的另一个好处。于是,他也决定趁此机会回英国与家人团聚。
通常他飞回英国时,本打算花大量时间写代码,却总因经济舱飞行环境狭窄而未能如愿,让他写代码时极不舒服,所以他很快就放弃了。
但这次不同,他只是在输入提示,实际上比敲代码容易得多,因此这趟航班成了他有史以来最高效的一次飞行。当然,他需要购买机上网络,花了约25美元。
不过,连接后,他在飞机上的工作流程基本上就是排队让Claude处理任务,而他只需放松观看机上电影。事实上,正是在这次飞行旅途中,他开始体会到这种全新的"氛围编程"所带来的自由——一种多任务工作模式,让他能一边进行编程,一边做其他事。
生病期间的生产力
这种多任务的领悟,最终被他带下了飞机。但不幸的是,这并非他唯一染上的东西,因为那次飞行中,他还感染了2025版新冠。
幸好续集没初版那么糟,但还是让他难受了整整一周。尽管如此,他仍保持了高效,这让他感到欣慰。通常感冒时很难照常进行工作,但进行vibe编码时,他只需表达想法,接着验证是否已实现,他就能完成大量工作。
第二周结束时,他不仅搭建好了管理面板,还成功为Next.js实现添加了几项新功能。因此,他开始相信vibe coding可用于编写可投入生产的代码。
第三周及后期:优化与深化
信心倍增,他决定为现有项目增添新功能,将vibe编程应用到Code Dream上。
技术栈适配问题
起初,他有点担心vibe编程与他的技术栈配合不好——Go、Templ、Alpine和HTMX。尽管有时直接使用原生JavaScript而非Alpine.js,但大部分情况下效果尚可。
话虽如此,它的确不如用Next.js效果好,这其实在他预料之中。这让他对软件开发的未来有些担忧。他担心AI工具的兴起会迫使我们进一步走向开发者单一文化,这实际上会损害整个开发者社区。但他并非先知,最终结果如何,还得拭目以待。
从零构建新项目:zenblog.ai
不管怎样,到第二周结束时,他开始更关注编程带来的积极影响,而非可能的消耗。因为他开始越来越多地在vibe编程中使用多任务处理,尤其是那周Switch 2发布了。
过去每当要在玩游戏和写代码之间做选择时,他总会优先写代码,否则就会感到强烈的负罪感。但说到氛围编程,他既能玩游戏,又能同时开发软件。当然,这当然不如专门做氛围编程高效,但比单纯手写代码高效得多。
除了电子游戏,这种多任务处理能力还延伸到了其他领域,比如看电影或做家务等日常琐事。
现在是时候继续到最终他想用来测试的项目上,即从零构建一个新项目。至于这个项目,他决定将之前关于自动生成博客的想法变为现实,于是开发了zenblog.ai——可让创作者自动将YouTube视频转为格式规范的博客文章。
为此项目,他决定再次采用Next.js,而非使用他偏好的技术栈,为尽可能快速构建,尤其是考虑到大模型更偏好使用它。
解决AI单一化问题
虽然速度快,却也带来了好坏参半的结果。他不断遇到所谓的AI单一化问题。
例如,这个项目他想用BetterAuth做认证(顺便说一句,这是个非常出色的框架)。然而,尽管他让Claude在设置认证时使用BetterAuth,他却发现它常像服了两片迷幻药般,基本会产生幻觉,以为他让它使用了NextAuth——很可能因为训练数据中有大量NextAuth的数据。
这种情况反复出现,直到他决定找出解决办法。幸运的是,这方案最终相当简单。
解决方案一:提供文档URL
阅读Claude Code文档后,他发现有两种不同方法,均聚焦于上下文加载。第一种方案是最终让他成功启动BetterAuth的方法:让Claude按照他提供的文档(以网址形式)实现。
Claude Code随后能先请求权限,再获取该URL以加载安装说明到其上下文中。这使其能顺利执行每一步,几乎完美无缺。
说明中有一处步骤会略有错误,即他的个人配置。这原本会为他迁移数据库,但由于他使用了Drizzle,这个迁移命令就失效了。
幸运的是,解决方法依然是明确地告诉大模型改用generate命令而非migrate。
解决方案二:使用claude.md文件
通过阅读Claude Code文档,他还了解到另一个重点:使用claude.md文件定义项目属性。
Claude在执行命令前会先加载该文件,因此他会用它来定义他应用的架构决策,比如:
使用BetterAuth做认证
使用bun替代npm
使用Drizzle配合Neon等架构选择
这能让Claude更清楚地理解你的项目意图及其依赖关系。此外,若结合这些依赖的文档网址,他发现这能让生成的代码更准确。
他还发现一个很有价值的用途是通过该文件明确指定生成代码的任何验收标准,确保每个功能实现后,代码既能通过bun run build构建,也保证自动化测试通过。
这些内容他可能会在另一期视频中详细讲解,因为它非常实用,是确保氛围编程高效运作的方法。
遇到边界:FFmpeg WASM问题
总之,仅靠vibe coding,他就做出了zenblog.ai的核心功能。但在实现视频处理功能时,他遇到了一个真正的技术挑战。
他需要使用FFmpeg WASM来处理大型视频文件(约2GB),但Claude生成的代码一直失败。经过多次尝试和调试,他意识到这是一个比较新颖的技术问题——需要使用workerfs来处理大文件。
这是他第一次不得不手动介入,查阅文档并理解解决方案,然后将参考实现提供给Claude。这让他认识到vibe coding的一个重要边界:对于常见任务它表现出色,但对于新颖或边缘案例的功能,仍需要人工介入。
工作流程优化
随着经验的积累,他开始优化整个工作流程。
多代理并行工作
他发现最有效的方式是同时运行多个代理,处理不同的任务。这样当一个代理在处理任务时,他可以切换到另一个代理继续工作,或者去做其他事情。
自动化流程
他建立了完整的自动化流程:
CI/CD管道:自动构建和部署
代码评审应用:简化评审流程
自动化测试:确保代码质量
安全扫描:使用Trivy等工具自动扫描漏洞
这些自动化工具在vibe coding中变得尤为重要,因为它们能帮助捕获AI可能遗漏的问题。
硬件选择
这次经历让他意识到,他开始更喜欢更轻薄的笔记本。因此他经常选择他的Framework 13或MacBook Air,而不是更重的Framework 16或MacBook Pro。是的,他知道,他设备太多,这问题他得尽快解决。
多任务处理的艺术
除了学会高效多任务处理,他还在提升编写提示和审阅修改的效率方面有了进步。关键是确保多个代理同时运行,并通过CI/CD、评审应用等简化评审流程,同时确保具备自动化测试和安全扫描能力。
他认为这将在近期变得极为重要,是能提升整体使用生成代码的AI时的工作体验的技能或产品。
总结与展望
总之,本周他成功为他的Code Dream网站添加了新功能,没有破坏任何功能。因此,他向自己证明了vibe编码在现有生产服务上可行。
个人收获
经过30天的实践,他从最初的怀疑转变为认可。效率大幅提升——几天就能完成原本需要一个月的工作(考虑到要兼顾本职工作)。
但这并不意味着他会完全放弃手写代码。相反,他认识到两种方式各有其适用场景。
对软件开发未来的看法
软件开发技能仍然重要
尽管编码方式发生了巨大变化,但软件开发技能依然至关重要。开发者的角色不只是写代码,还需要掌握:
架构设计:决定系统的整体结构
任务分解:将大功能拆分为可执行的小任务
代码评审:确保代码质量和安全性
技术决策:选择合适的技术栈和工具
新的瓶颈
随着AI提高了代码生成速度,新的瓶颈出现了:
代码评审环节:需要仔细审查AI生成的代码
应用测试环节:确保功能正确实现
这些环节将变得越来越重要,可能成为未来开发流程中最耗时的部分。
开发者单一文化的担忧
他担心AI工具的兴起会迫使我们进一步走向开发者单一文化。由于AI在某些技术栈(如Next.js)上表现更好,可能会导致技术选择的同质化,这实际上会损害整个开发者社区的多样性和创新能力。
工具态度
对于未来,他的计划是:
继续使用Claude Code:特别是处理快速原型和常见功能
保持手写代码:用于学习新技术和处理复杂问题
不使用内置AI的编辑器:保持他偏好的工作流程
期待尝试其他AI工具:保持开放心态
关键建议
基于这30天的经验,他的建议是:
氛围编程适合:
快速MVP开发
常见功能实现
重复性工作
多项目并行开发
需要人工介入:
新颖功能开发
架构决策
安全审查
性能优化
未来重点:
培养软技能(架构、沟通、决策)
优化评审流程
建立自动化测试和安全扫描
保持对新技术的学习能力
核心结论
氛围编程是一个有效的生产力工具,但它并没有消除对软件开发技能的需求。相反,它改变了开发者的角色——从编写每一行代码的工程师,转变为更像技术负责人的角色,需要具备架构、任务分解和评审能力。
开发者的价值不在于能否快速敲出代码,而在于能否做出正确的技术决策,设计良好的系统架构,以及确保代码的质量和安全性。这些能力在AI时代变得更加重要,而不是更不重要。
对于那些担心AI会取代开发者的人,我想说:AI改变的是我们工作的方式,而不是我们工作的价值。拥抱这个变化,学会与AI协作,你会发现自己能够完成以前难以想象的工作量,同时有更多时间专注于真正需要人类智慧的创造性工作。
参考资料:
源视频,I tried vibe coding for 30 days. Here's what I learnt...,
https://www.youtube.com/watch?v=PDMxbbejgcA
如果这篇文章对你有帮助,欢迎点赞、收藏、转发。也欢迎在评论区分享你的经验,我们一起交流学习!
我是 dtsola【IT解决方案架构师 | 一人公司实践者】 ;专注商业、技术、一人公司、个人成长分享。
提供服务:AI项目咨询 | 技术解决方案 | IT项目实施 | 企业技术顾问
博客:https://www.dtsola.com
公众号&VX:dtsola
需交流经验,加微信 dtsola,备注:交流经验。
需IT咨询,加微信 dtsola,备注:IT咨询。
#AI编程 #VibeCoding #Cursor #ClaudeCode #独立开发者 #AI创业 #一人公司 #程序员 #软件工程师 #软件工程