我搞“一人公司”这半年:5款APP,AI炉火纯青;200到账,业绩讳莫如深
零、引子
半夜两点,我辗转难眠。我需要第n次反思一下过去这半年副业创业的境况了。我打开手机上的 App Store Connect。微弱的蓝色荧光照亮我的枕头。
这是我过去半年的成绩。这半年里,我支出的token和云资源成本成千上万,投入的个人时间连起来绕地球一周。但App Store里面的数字清晰得愈发模糊: 5 个 APP,半年收入 210 元。

床前明月光,心里有点慌
我常常在朋友主动问起之前,提到我现在副业创业月入四百万IRR。当朋友查到 IRR是伊朗里亚尔之时,就是我成功地用尴尬的幽默掩盖了幽默的尴尬之时。
过去这半年,我用业余时间开发并上线了5 个 APP。这个数字对于 vibe coding 大盛、AI 编程大兴的今天来说,并不算特别稀奇;但对于文科转码的我来说,可谓是奥林匹克。
时至今日,副业创业这个事情对我来说确乎像是一场大赔特赔的赌博了。我投入了大量的时间、精力、金钱,最终的成败却并不能总是尽如人意。如果当时努力得能少一点,那么现在虽然也是一无所获,但起码能赔的少一点。
大浪淘沙,风吹脖颈。我作为一个普通玩家,虽然确实算是打造了一个属于自己的AI小工作坊,但终究还是不算掀起了什么风浪,甚至也不算有点涟漪。而打开社交媒体,这嘈杂的赛道上仿佛神仙遍地,遍地开花。左有MIT大神vibe了10万人点赞的网站,右有高中辍学的老哥手搓1000万MMR的产品。连胡彦斌都开始vibe coding了,他只是拍了一张歪七扭八拿着电脑的照片,各大平台的热搜就刷爆了。而我,左有被不知道什么原因精心编辑了大半天满怀期待发出来却被限流且申诉无效的1个观看的帖子,右有发现以为的时隔一个月终于增加的新的付费用户其实是我自己的扎心乌龙。
我必须振作起来,好好梳理一下我这半年的创业经历了。其中最重要的,应当就是我摸索出来的非常适合我、一度令我颇为骄傲的AI开发流程。这似乎是我唯一可以称道的遗产。如果对业绩这件事情缄口不提,那么我确实可以说,我的AI功力已经炉火纯青,可以指挥一大群AI小奴隶各司其职地为我干活了。表面上,我似乎是一个不太如意、惴惴不安的AI创业者;但背地里没有人知道的是,我工作的方式是手执长鞭,左抽右打,在一众AI Agent面前居高临下,颐指气使,神气至极。

表演指挥AI Agent中
我意识到,我必须马上梳理打磨AI工作流的过程,并分享给所有人。一方面,这些app产品的设计凝结了我的怪诞设想,这将是我再一次伯牙绝弦的吆喝叫卖。另一方面,我从一开始便不把任何一个产品本身视作我势单力薄的独立开发者的护城河;只有独特的审美创意和“高速奔跑的能力”是。而我这套AI独立开发者工作流有独特的“三化”——Agent化、多线程化、和开发移动化。这为我释放了极大的生产力,也释放了极大的token燃烧力,更是符合这如果更努力就能得以更努力的“高速奔跑的能力”。倘若,我只是说倘若,这套东西能蒙骗到一些也在此行跃跃欲试但还没有真正入门朋友,甚至能让朋友们多走一些弯路,和我一起祸祸韶华,那则是多么大的喜悦啊。
想到这里,我立即在黑夜中坐了起来。望着漆黑的墙壁、懵逼的狗子,这半年开发5 个 APP、并且建立赛博家庭小作坊的颠沛经历和史诗画卷,在这宁静凄凉no one gives a shit的氛围中徐徐展开。
一、Trump vs Penguins:线型 vibe coding ,但也有点技巧
我接触 vibe coding生产力的第一阶段,是我做一个叫做Trump vs Penguins 的小游戏的过程。它的玩法大概就是代表企鹅国的企鹅在关税战中追击川普。制作它的过程很标准vibe coding,基本上就是坐在电脑前,跟AI 一句一句说:这里加个企鹅,那里加个动画,这个按钮不好看,这个川普有点丑。我推一句,AI干一点,效率还是嘎嘎可观,断断续续一两周就完成了一个月的工作量。
这可以说是我的第一个AI native的App,从美术到代码全部利用AI实现。这个app写完后,我看着它的精美的完成度和优雅的川普和企鹅,露出了王有胜守仓库时一般的笑容。而且我还沾沾自喜于自己的工程经验,可以把一些意义不明的工程规范(比如”任何代码文件都不要超过300行否则你会被开除“)带入vibe coding的流程中,从而让产出的代码库较为稳健,不会出现比如一个文件2000行导致按下葫芦浮起瓢的尴尬情况。
虽然但是,这个游戏在推广的时候并没有找到很多兴致盎然的玩家。我尝试在各种中外社交媒体上发帖宣传,都没能找到比较能呼朋引伴的姿势。唯一的忠实玩家意外地来自于我对象的正在读初中的表弟,他自从发现这个可以直接下载到手机上后在过年期间爱不释手,以至于走到哪里都要随手刷分,而最终他也成功找到了可以无限刷分的隐藏bug,对着无限增长的贸易赤字露出了灿烂的笑容。

不过这小游戏没有大卖并不能让我灰心,一方面我在偷偷策划下一个app的秘密方案,另一方面我也在思考整个开发流程可以改进的地方所在。我其实早已意识到,对于我这种资源较为有限个人开发者来讲,既没有护城河也没有前期可以大肆投入营销的资本,那么唯一较为有竞争力的就是独一无二的品味和创造力。但是综合失败率较高的情况下,我可以用更高的开发效率和更多的产出来扩大分母,就像母鸡想方设法大大增加下蛋蛋的速度,那么有朝一日总会有一个蛋会破壳而出,成为整个鸡舍令人骄傲的那颗珍珠。那时我的真正护城河才会和盘托出,那就是我这对可以高速下蛋的母鸡屁股!
于是我审视这个app的开发流程之后,认为这种AI辅助开发的方式还比较原始,属于“线型 vibe coding”。虽然这比起无AI手搓已经快很多,但是效率仍然有大幅提升的空间。现在的我还在和AI互相排队,AI 写完我验收;我验收完AI写。虽然这给了我一种从给AI当了老板的快感体验,但我在沾沾自喜之余也在思考,也许有一些更加奇技淫巧的做法,能更大限度地抽动AI这个聪明又听话的电子小奴隶,让它快马加鞭地为我的项目连轴旋转,成为我构建设想中的这个高效的个人开发流水线的重要手段。
二、Filled Days:搞一群AI,多线开发
对于刚才这个邪恶的问题,我在打帝国时代4调配农民挖矿伐木的时候得出了第一个答案:多线程。传统的开发方式是把一个项目拆成n个子任务,然后一个一个做。前端做完做后端,列表做完做详情,详情做完做设置。这是因为一个人就两只手一个头,除非有很多人。但是没人说AI也只许有一个呀?我直接把项目文件夹复制n份,每个文件夹各自打开VS Code,各自分配一个AI小奴隶,让它们同时搞不同的任务。虽然多个人在一块地上干活容易冲突,但是我当了这么多年码农,最熟的就是git操作了。只要我把每个任务的scope限制好,让他们干的事情尽量独立,并且用git让它们在不同的分支上工作,最后只需要合并各个分支即可,那么理论上我的效率将直接乘以n。想到这里我激动得头皮都发麻了,我需要马上去我的电脑前实现。
这个app的设计我也颇有设计。它即将是一个使用 SwiftUI 的iOS 应用,主要的设计思路是用视觉刺激和微情绪刺激来奖励和管理日常日程规划的app。每完成一个任务用户就可以得到一个喜人的彩色小方块来fill自己的days之瓶。而且它也将是一个,拥有3D小瓶子、原生小组件、灵动岛等一系列我没有接触过但是即将被我接触的奇妙技术。虽然彼时我隐约知道这种个人日程管理的app已经被做烂了,但是新的工作方式和绝妙设计让我无法继续按捺,直接在我的4个显示器上部署8个AI小奴隶,开始建设这前所未有的宏图大业。

直接四个显示器,大展宏图
Filled Days 的开发速度明显比之前快很多。大概一周就有了主体形态,又花了一个月左右打磨。虽然这个时间听上去和上一个app差不多,但它实际上的工程难度要复杂数倍,而且它的完成度和精美程度也上了一个新的台阶。正如前面所述,这个app一开始设想时便涉及了多种时间记录和呈现的形态,使用场景的高频和多样也会增加各种bug出现的压力;而且双栏日历视图、3D小瓶子渲染和方块重力交互都颇有挑战性。多线程AI很好地完成了这些工作,从代码库管理到bug的持续修复,雁过留痕齐齐整整,我看着这优雅的成品又一次露出了王有胜守仓库时一般的笑容。既然这个app如此优雅,那么我给它的pro版本征收20元的月订阅费便也合情合理。

这一次的营销也比上次颇有进步。我在国内外的社交媒体上都发帖进行了宣传,也使用了免费会员大放送这样的立竿见影的手段,致使这个app宾客偶至,略见起色了。尽管营销的技巧还有不少改善的空间,但我对打造高速下蛋能力的追求更加令我感到刻不容缓。如果说开发app是在春天埋下种子,营销app就是在夏天浇水施肥,那么虽然现在秋天的收获尚未来临,我便已经开始思考如何再种一茬庄稼了。
三、DocDance:移动端应用,当然要移动地开发
目前这种多线程开发已经可以大大增加生产力,只要git管理和任务切分得好,一个人管理4-6个甚至更多AI Agent应该是不成问题。然而,这里的最大瓶颈是我这个赛博包工头的验收效率。AI小奴隶们虽然可以同时干活,但我这个包工头还是得一个一个验收,切换分支,合并代码,处理冲突,测试功能。这个过程虽然有成就感,但这就极大地拖慢了节奏和多线程上限。
最理想的也许是直接让AI接管这一切。一些非常有野心的尝试已经在社区里已经蠢蠢欲动,比如直接搞一个AI集群,让AI Agent担任从产品经理到设计师再到测试的全流程角色,甚至让它们互相验收对方的代码。我一开始也被这种“AI军队”的概念所煽动,壮士断腕般地购买了Claude 200美金的max会员,开始了各种激进的实验。然而,这些尝试最终虽然都没有失败,但并不能达到成功。多Agent确实搭建起来了,token也确实燃烧起来了,账单也确实恐怖起来了,但搭建出来的app仍然无法通过质量关。一方面,AI生产的设计稿质量堪忧,丑不堪言;就算人工介入修改了设计稿,AI测试和产品经理一起也难以完成高质量的视觉验收和bug的主动发现和修复。总而言之,全自动的流水线无法给app注入灵魂,而这灵魂是个人开发者万万不能牺牲的东西,因此我对于这个过于激进的方案直接弃若敝屣。
恰逢农历新年将至,我坐上了飞机高铁在不同城市之间来回穿梭,并且决定回到老家和家人一起过一个锣鼓喧天鞭炮齐鸣的春节。但开发方式的演进问题总是如影随形,我甚至恨不得在亲戚家里的饭桌上当场掏出电脑直接开搞。然而如此离谱的场景还是被我克制住了,我只能拿出手机盯着GitHub网页版发呆。突然一个大胆的想法在我脑子里闪过:谁说开发只能在电脑上进行呢?
于是我当场进行了一种全新的尝试:纯手机开发。毕竟GitHub copilot、Claude或者 codex 都可以从手机上提交并且创建 PR,我只需要对 AI 代码稍作审核即可。难的是即时编译和调试验收,然而这也有了初步的解法:选取一个跨端技术栈比如react native,然后配置一个GitHub actions 允许我们在一个PR 上手动触发一次编译和分发,利用GitHub提供的CI环境,将 App 编译到GitHub pages 里做预览即可。简而言之,我们把app 写成能在网页里预览的版本,在手机上审阅代码,通过把编译和分发外包给GitHub提供的远程小奴隶,形成改–验收–继续改的闭环,就直接就完成了 vibe coding 全流程的组合,并且不再需要端坐在电脑扶着自己咔吱咔吱的腰椎间盘寒窗苦开发了。相反,任何空间和时间都可以随手进行使用–思考–开发的循环。

离不开电脑的码农拥有悲惨的后背,狗子都看不下去
这就是DocDance的诞生过程。这个app的出生可谓非常丝滑,主体完成也就只用了不到一周的时间。要知道这并不是我在电脑前兢兢业业地搓出来的,开发的痕迹遍布了城市的各个角落,一想到这一点我就三度露出王有胜的微笑。这个app本身的idea也是我在开发上一个app的过程中形成和固化的,它来源于我本科时期自我诊断的阅读障碍症。当时由于我们属于社会科学专业,需要大量摄入成千上万的密集文字来巩固基础。那韦伯涂尔干布迪厄不是和你闹着玩的,几十万字的专著劈头盖脸地袭来之时,手无寸铁的大一的我可谓天旋地转。彼时我强行用类似ReadAloud等软件辅助阅读,高亮效果随着机器朗读一字一字地划过pdf,我才像老奶奶自己扶自己过马路一样啃完了那些必读书目,并且默默取消了学术马拉松的报名。DocDance便代表着年过三分之一百的我对年轻时未竟事业的不甘,它相当于老奶奶给自己发明了电动小车。只要上传任何已经被OCR解析的pdf文档,这个app将会用非常轻量的本地算法自动识别关键词句以彩色高亮放大放小划线突出,并且按用户舒服的速度一字一词动态蹦出,让枯燥的文本仿佛全部自带五光十色的抖音特效,完美契合已经被抖音刺激得无法只看黑白电视的晕字大脑。这无比适合对啃一些难啃文本仍然有需求和向往的广大莘莘学子,就连我自己都不小心用它看完了偷偷下载的禁忌之书。多年前的自我诊断如今还真的有了自我辅助,而这移动着开发的移动端app第一次让我感受到了app交互不设限的价值、开发过程不设限的空间、AI赋能不设限的实现力这三个不设限,让我忍不住喝了一口自我感动的纯净水。之所以是纯净水而不是红酒或者眼泪是因为我觉得这个app的宗旨过于高尚,于是决定不做任何收费的尝试,免费宣传用爱发电一次。这个小应用可能还真的精准踩中了一些人的需求,导致我随手发布的寥寥数贴还在经年累月地给它带来用户。

DocDance的顺利开发标志着我成功打磨出了一套适合我自己的移动化开发的途径。不过,它还需要和之前的多线程思想更好地结合起来才能发挥最大功效。现在的移动化开发只有一个验收地址,如果同时发出去10个更改请求,我必须逐一点击触发编译分发等待几分钟才能验收。它似乎是目前让我开发速度不能真正乘以n的最大瓶颈。也就是说,距离我拥有一套AI Agent开发+移动化开发+多线程开发三buff的王凿纺纱机只剩这最后一块拼图——编译分发预览、尤其是预览地址的多线程化。
四、拜拜灵、几点死:纯熟的多线程+移动化开发产物
对于上面这个问题,答案并不是显而易见的。如果纯用网页,需要动态增加路由地址来部署,并且硬做的话会把简单问题复杂化。而且也要针对选用的技术栈进行适配。App开发可以选取多种不同的技术栈,每个技术栈都有自己的优劣长短。比较流行的flutter、uni-app,iOS原生的swift ui,都是完全不同的写法和相应的技术栈。我之前DocDance选取的React Native,其实最大的优势在于可以一套代码支持多个平台(iOS、安卓、web)并且适合熟悉React和JS的选手,但它不像flutter有所谓的跨端一致性,开发出一个橘子在不同的平台可能在淮南是橙子在淮北就是鹌鹑蛋黄;也不像swift ui那样只要叫苹果一声爸爸,就可以继承iOS它高贵优雅而粉丝万千的原生组件样式,比如高贵优雅而粉丝万千的液态玻璃(这是Filled Days里可以体验到的)。正当我心生犹豫,打算良禽择木而栖的时候,一个叫做Expo Go的东西进入了我的视野。
这个东西源于我对一款叫做Replit的vibe coding 的app的尝试。它使用Expo Go接管手机端的应用编译和预览。非常巧妙的是,它不需要你去部署web版本在网页上进行测试,而是可以支持iOS或者Android在手机上进行预览。原理是通过它提供的分发网络,你在GitHub actions那里把要打包的软件半成品装进外卖盒,并且允许你在外卖盒上写下不同的PR编号和标题,然后纷纷经手Expo Go的分发网络分发到你的手机的Expo Go的app里面,你便可以绕过繁杂的苹果官方test flight流程,在app里面浏览app,外卖盒里再套外卖。这样就完全解决了我们遇到的预览地址的多线程化问题。而好巧不巧,这个Expo Go就是React Native的适配框架。良禽和良框架一拍即合,原地赖着不走了。我的心情像良禽一样振翅而鸣,王凿纺纱机的拼图就此完成了历史性的闭环,接下来只需要我脚踩缝纫机,手推摇摇车,让人工智能时代的生产力发出蒸汽时代般的轰鸣。

燃烧吧,AI!
现实其实没有这么燃,由于我手机常年静音,甚至没有PR完成时的叮铃叮铃。但我确实以前所未有的速度和质量迅速完成了另外两个app——拜拜灵、几点死,并且我认为我的产品仍然具有我的设计、审美和灵魂,而不是千篇一律的AI大便,这让我在用户数量和营收都颇为惨淡的情况下,仍然可以第四次和第五次地露出王有胜守仓库的满意微笑。
分别简单介绍一下这两款新式纺纱机的作品。第一款叫做拜拜灵,是一个真正需要举着手机鞠躬来完成祈祷或者拜一拜动作的许愿app。它的灵感源自揽佬“虔诚拜三拜,钱包里面多几百”的简单启示,外加近日我身边多位好友对好运的迫切需要,这个app便诞生得颇为应景。这个app我拿出了多年做海报所积累的一些审美功底,诚然可能不如大艺术家的旷世佳作,但轻盈的神像、协调的风格、治愈的音乐、细节的打磨,无不为了服务用户心灵的安定平和,默默地祝愿大家能不劳而获。

几点死是一次一时兴起之后的着手制作。当时我正在思考独立应用的流量密码,如何能有效地甚至用游戏化的方式奖励用户、留住用户。GPT建议我可以引入积分或者货币,而在对虚拟货币毫不感冒的我的逼问之下,它终于说出了一个颇为勇敢的回答:寿命。我愣住之后马上铺开战线,设计以寿命奖惩为核心的健康软件。这就最终形成了“几点死”这个风格颇为阴间的名字和主题,它先用“死亡小测试”来给每个人赋予一个专属预期寿命和死亡结局卡片,然后用“死亡倒计时”警醒人们多做有利健康的善事,最后用“死亡大转盘”来不确定地奖惩过去半小时你的功德报应,依据你自己制定的行为准则让你折寿或者延寿。而且基础行为只决定增减寿命的正负和倍数,真正刺激的是转盘的数字天差地别,稍有不慎便可能早死半年,而如果功德得当早睡早起强身健体四体都勤,寿比乌龟不是梦想。

五、尾声
故事到这里就暂时结束了,镜头又回到开头我对自己这半年经历的审视的场景,盘着这些实实在在的经历,抛开讳莫如深的业绩,我的AI纺纱机的确是摸得炉火纯青了。就这个工作流本身而言,随着各种工具和框架的层出不穷,它的原始版本自然显得有点老旧,如果读者中有纯熟的token燃烧者肯定有更加先进的技术方案。但我确信的是,只要AI还无法替代人类的审美和创意,那么用多线程+移动化来给AI提效的思想仍然是大势所趋,只是形式演进千变万化而已。这种快速奔跑、并且是高质量奔跑的能力,确实是作为个人开发者可以掌握、也较为实在的技术资产。从这个意义上讲,我也算是拥有了打造和驾驭这套流程的趁手经验。虽然钓上来的暂时都是没有大卖的奇鱼怪虾,但我享受了搭建一船多钩、随地远程下钩的策略的乐趣。
而且谁说奇鱼怪虾没有顾客呢?打开Filled Days用户群,里面也已经累计了两三百人。私信里,每过个十天半个月就会有一两个人以不同方式对我开发的某个app发出鼓励,这虽然不如成千上万的用户好评让人妒忌,但何尝不是来自陌生人不求回报的真诚善意。而我一开始对用户的粗浅理解却是可以给我供养钞票的水池米粒。如此一比,实在是颇有愧意。俗话说得好,价值交换才是商业成功的秘密,或许我需要更加深刻地内化这个道理,才能让我这个赛博小摊逐渐走向发迹。

此外,我的女友也对我在这赛博小摊里折腾的事情饶有兴致,还主动参与到后面一些app的开发过程中来,甚至主导了另一个尚未发布的贴纸记录类app的设计和开发。她与我迥异的背景和思考角度总是能提出一些十分独到的问题建议,并且也在以显著的方式给她的app注入她独特的灵魂。这种半合作半互评的开发方式,仿佛形成了一种AI时代的新型家庭联产承包责任制的雏形。
想完以上所有这些,我的焦虑便减轻了不少,甚至嘴角第六次露出了王有胜守仓库的微笑。我于是决定懒腰一伸,倒头就睡,寿命+1天。
大浪淘沙,风吹脖颈。人在这世界上既有很多的限制,就像我知道我作为一个独立开发者,还有太多的方面都需要进步。但与此同时,人在这世界上也又有很多的可能,AI演进至今虽然时而让人惊叹时而也让人呕吐,但它确实是推开未知世界迷雾的一个不错的工具。商业的世界确实挺残酷,都是真金白银真刀真枪的投入,如果不够强大和幸运,就的确难以生存;而我虽然还没有成为这游戏中的强者,却至少证明了,这样的旅途即便一无所获,也不会真的一无所获。


夜雨聆风