一个年轻父亲坐在游泳池边的躺椅上,笔记本电脑放在腿边,他在看屏幕上的代码,不远处的小女孩在沙滩上玩沙,阳光透过棕榈树洒下斑驳的光影,远处有海平线,温馨而治愈的度假场景

游泳池边的笔记本

三亚的国庆,海风黏腻,游泳池里的水还带着一点消毒水的味道。

一个年轻父亲把笔记本放在躺椅边上,游出去,划几圈,回来歇一口气,打开屏幕敲几行字。再游,再回来。

泳池边度假场景,年轻父亲在躺椅上工作,远处的女儿在沙滩上玩耍

女儿在不远处玩沙。他没有把这当成什么英雄叙事,只是觉得度假总得干点什么,不如把那个跑了快一年的脚本整理成一个正式的工具。

那个工具后来叫 Mole。

它发布半年后,超过七成的用户来自海外。

而这,只是这位开发者在十三年间做成的第六件事。

六款工具,六次「自己先用烦了」的产物

这个人叫 tw93,GitHub ID 是 tw93,本职是前端工程师,有正职,有家庭,还有个小小的女儿。

如果按照互联网的标准叙事模板,他大概会被归类为「副业大佬」或者「独立开发者标杆」。但他本人可能不太认同这种分类。他只是有个习惯:碰到了一个让自己难受的问题,顺手把它解掉。

第一个产品叫妙言,起因是找不到一款顺手的 Markdown 编辑器。他讨厌 Electron 那种重框架,就决定自己学 Swift 写一个。写完之后,Swift 学会了,Apple 底层渲染性能的门道也摸清了。妙言到今年已经快六年。

Pake 的故事更像一个意外。他每年会分享一次自己电脑上装的好用工具,某一年他喜欢用微信读书但没有桌面端,就用 UI 框架顺手打包了一个,发出去以后大家发现他分享的软件里有三分之一是自己写的。有人问微信读书那个怎么打包的,他就开源了代码。没想到在国外比国内火——老外喜欢把网页打包成 Mac 客户端,但 Electron 太重,Pake 刚好填上了这个空缺。

潮流周刊更早。七八年前他开始带团队,发现技术氛围不够,于是立了个 flag:每天早上看开源工具和技术资讯,整理成内部周刊。后来有人离职,问能不能在外面看,他就把周刊放到了 GitHub 的 README 里。又过了半年,国庆在老家,花了两天做了个网站,发了出去。

Mole 的前身是本地跑了快一年的 Shell 脚本,快一千行,专门清理程序员电脑上的垃圾缓存。每年买很多正版清理软件,但觉得太重。游泳池边的那次度假,他把脚本整理成了第一个正式版本。

Kaku 是 fork 了一个终端工具改的。他最早用一款极轻量的终端,配得很好看,但 AI 时代来了以后必须多窗口,那款工具不支持。找来找去,只有一个项目能改,就自己动手了。

Kami 则是他做投资时顺手做的。他七八年前开始投资美股,本地写了一套多 agent 的投资分析系统,但 AI 生成的报告太丑,就按自己的审美调了一版。发到推特上,发现大家发的报告也不够好看,开源了。

他还顺带在做一套自己的字体,完成了三分之一,因为常用的那款字体是商业字体,开源产品能用,但商务合作就麻烦了。

你注意到一个规律没有:这六款工具,没有一款是从「我要做个产品」开始的。它们全都长在一句话上——我遇到了一个问题,我先把它解掉。

Waza 更晚一些。起因是把将近一年、五六个 G 的 Claude 对话记录沉淀成工程技能库。他用 AI 分析了所有对话,按项目维度、时间维度拆解,提炼出最佳实践。这个习惯后来变成了他的日常工作:每周花一小时,让 AI 分析过去一周的踩坑记录,然后更新 Waza。

有意思的是 Waza 的结构。70% 是代码,只有 30% 是 Markdown 文档。他的逻辑是:MD 只是告诉 AI 怎么干活,代码是让 AI 能基于它去扩展。他不喜欢那种把 AI 手脚拴住的框架,觉得太重,而且会拖模型能力的后腿。他更愿意把 AI 当朋友,而不是下属。

代码与文档的关系可视化,AI作为朋友的理念,左边是代码世界,右边是友善的AI形象

Claude 4.6、4.7 出来以后,模型能力越来越强,你越约束它,其实是在拖它的后腿。他这么说。

Waza 里有八个 Skill,覆盖的不只是写代码,还有怎么推进项目、怎么做技术方案、怎么写让读者看得懂的文档、怎么画设计稿。在他看来,一个工程师只有三成时间在写代码,其余的能力同样重要。

Waza 知道自己的迭代方式,所以他只需要定期喂给它新的踩坑记录,它会自己更新。现在 Waza 也支持了 Codex,因为他自己开始用 Codex 了,所以它也去分析 Codex 的对话记录。他本地还有一个基于 Waza 的私人 agent,专门帮他处理开源项目的 issue 和 PR。这个 agent 知道他对 Mole 的调性要求,知道哪些功能坚决不能合,哪些 PR 写得有问题但可以改好,哪些直接不合适。他把自己从最耗时间的事情里解放出来,专注于写新功能。

Mole 为什么七成用户在海外

Mole 发布后,海外用户占比超过七成。原因不是他做了什么海外推广,而是几个更底层的因素叠加在一起。

第一,老外其实更节俭。欧美用户会把一台 Mac 用很多年,用久了会很卡。用 Mole 清了 60G、100G 的垃圾,他们非常激动,会疯狂去推广。tw93说,老外说话夸张,会直接说「我要给你跪下,你是个天才」。

第二,更懂程序员的清理工具。传统清理软件不关心程序员的各种开发工具的缓存,比如 CleanMyMac 出于安全考虑,不会去动那些深层的开发缓存。但 Mole 是程序员写给程序员的,知道哪些东西可以清,哪些开了白名单不能碰。

第三,开源本身就是最好的产品迭代机制。Mole 有 300 个 PR,100 个贡献者,全是海外用户。每个人的电脑环境不同,国家不同,技术工种不同,这些贡献让 Mole 能清理的东西越来越多,这是任何公司产品都做不到的。

当然也踩过坑。第一版发布时,因为 tw93 自己的环境偏前端,没有数据库相关配置,结果把一个用户 JetBrains 数据库工具里存在 cache 目录的账号密码全清掉了。那个用户很生气,他也很抱歉。这件事让他意识到,很多客户端产品的文件路径规范极其混乱,普通用户不关注,但清理工具必须关注。Mole 后来给 JetBrains 全系产品开了白名单,也因为这个教训越做越严谨。

还有一个细节能说明 Mole 的热度。他当时把两张图片放到了 Vercel 的 CDN 上加速,不到一周,Vercel 发来紧急通知说他欠了 80 美元。他以为不可能,去查了一下,发现就是那两张图片,用了 80T 的流量,就几分钟时间。他立刻意识到,这个 README 有大量的人在访问。

第一款付费产品,每十秒收一笔钱

Mole 推出桌面端时,tw93 周一晚上十点发布,因为白天在上班。

发出去之后,手机大概每十秒响一次支付通知,后来连 iPhone 都开始发烫。睡觉前,他不得不把 Google 的通知全部关掉,不然睡不着。

定价 9 美元终身买断。很多人说他卖太便宜了。当然也有喷子说,你不就把 CLI 包了一下吗?他觉得无所谓。他本来就不是靠这个赚钱的。

他最开心的是,有人用了以后愿意主动打赏。免费的东西,有人愿意付钱,说明做的东西是有意义的。手机弹出微信通知「谁谁谁又给你打赏了」,他说那种感觉真的会很开心。

支付对接用的是 Dodo Payment,一家印度小哥创立、注册地在美国的支付平台。他之前试过 Stripe,走到最后一步,对方要香港身份证,卡死了。Lemon Squeezy 也要求提供公司信息,个人用不了。后来在推特上看到有人推荐 Dodo,花了一个下午接好,发布了。

支付对接场景,一位微笑的印度小哥程序员通过电脑远程帮助,旁边有Dodo Payment的可爱logo鸟形象

不过支付平台会收 16%、17% 的税。后来 Dodo 的 CEO 办公室的人主动在推特上找到他,把他拉进了专属服务群,还给了一些费用减免。

关于收款,他有一个实操建议:超过 1 万美元,立刻会有很多人来找你核查,非常麻烦。尽量把钱放在香港卡或新加坡卡,不要直接汇回国内。他自己就因为这个折腾了几次,最后把钱退回去重新想办法,不过他夸了招商银行的服务人员会为客户着想。

为什么他的东西好看

很多人用完 tw93 的工具,第一反应是:怎么这么好看?

他给了几个原因。

大学时保研后有大量空闲时间,把图书馆里所有前端和设计相关的书都看完了。设计思维、极简主义、日本设计原理,那个阶段打下的审美底子,后来工作了才慢慢显现出来。

入职后,他最喜欢跟设计师玩,经常一起讨论设计细节,受他们审美影响很深。后来负责整个部门的 ToB 产品,发现用文档跟人对齐方案,大家理解都不一样。最后发现最有效的办法是直接画一张高保真 Sketch 稿,发群里拉个会,大家立刻就 get 了。为了不让一件事反复讨论,他逼着自己学会了画稿。

还有一个更底层的原因:他是强迫症。他说自己刚入职时,QA 同学测不出他写的页面有 bug,他的代码可以免提测直接上线。这个习惯一直延续到做开源产品。做到 75 分没 bug 不够,他要做到 95 分。不是为了炫技,是因为他受不了丑的东西,也不想让用户反复来问他。

他最近还在看元至清的中国古画,以及日本设计原理方面的书。他说很多古画看不懂意境,但看画家怎么画马、怎么构图,还是能 get 到一些东西。

关于长期主义,他说的最实在的一句话

「长期主义能帮你更好地偷懒。」

他在一家公司工作了 11 年没换过。

他买特斯拉股票是在 100 多美元,买英伟达股票是在 80 多美元,买了以后从来不卖,一年只操作两三次。他说他很讨厌做判断,因为一旦有多个选项就会很纠结,那几天都会很难受。所以他尽量在需要做判断之前,就把很多事情提前决定好,这样就不用反复纠结了。

长期主义在他这里不是口号,是一种减少决策消耗的生活方式。

他的 GitHub 只有 6 个 pin 位,全占满了,不会再开新坑。他认为,同时做 100 个产品,100 个都做不好。把现有的几个维护好,复利会越来越强。Mole 发布半年,已经迭代了将近 40 个版本,用的人越来越多,知道这个产品的人越来越多,这才是真正的积累。

他还提到一个反直觉的观察:妙言在真正公布之前,已经迭代了半年多,用户量一直很少。一推出去,数据直接从平线拉起来。酒香也怕巷子深,你还是得在适当的时候把门面讲清楚。

给非技术人用 vibe coding 的建议

他说,非技术人做产品,最大的风险不是写不出代码,而是不懂通识,半年后代码跑不动了,自己也不知道出了什么问题。

他举了个例子:AI 能把一个产品做到 80% 很容易,但从 80% 到 100%,可能要花 80% 的时间。很多人不懂这一点,觉得前端也就这么回事,后端也就这么回事,我什么都不会,app 就写出来了。但这个 app 想从你能用到 100 个人能用,中间有大量你发现不了的 bug,因为你不具备找 bug 的能力。

他推荐了几本书:《人月神话》理解为什么软件项目不能靠堆人解决,AI 时代同样适用;《启示录》理解怎么做产品取舍、怎么定义最小闭环、怎么规划里程碑;《左耳听风》理解一个资深工程师是怎么看问题的;《Linux/Unix 设计思想》一本很薄的书,讲原子能力、管道、系统设计的底层逻辑,他说大学看完以后有种功力大增的感觉。

他的核心观点是:你不需要会写 React,但你要知道什么时候该用 React、什么时候只需要一个静态服务器。这种判断力,才是 vibe coding 时代真正的护城河。

程序员站在分岔路口,一边是复杂的React图标森林,一边是简洁的静态服务器小屋,体现选择判断力

最值得收藏的一个观点

他说,在 AI 时代,真正的壁垒不是你做出了什么工具,而是你和 AI 的聊天上下文。

别人可以把你的产品蒸馏走,但没办法蒸馏你踩过的坑、你的判断逻辑、你和 AI 反复打磨出来的那些失败路径。

他特别强调:记录失败比记录成功更重要。成功的东西大家只看结果,失败的路径才能告诉你下次怎么绕开。就像线上系统挂了,你一定会去查挂在哪里,但系统跑得好的时候,没人会去研究它为什么好。

关于记忆系统的设计,他有一个很有意思的框架:按照人类记忆的方式来设计。大语言模型本来就是基于人类语言训练的,所以记忆系统也应该像人一样,有项目上下文记忆(当前在做什么)、短期记忆(最近遇到的卡点)、长期记忆(历史积累)。

他不太推荐直接给 AI 灌知识库,因为知识会过期,灌进去的人可能自己也不知道哪些已经过时了。把你和 AI 的所有对话记录保护好,把 AI 帮你干成和干失败的记录都保存下来。这些东西,才是别人学不走的东西。

出海商业化的几个实操细节

如果你打算做出海产品,他的经验是:

个人身份对接商业资源,天然处于劣势。建议注册一家美国小公司,费用不高,每年记得报税就好。有了美国公司主体,App Store 账号、支付平台、云服务商,都以公司名义对接,中国个人身份的限制就绕开了,税率也会低一些。

支付平台不要自建,也不要用那些知名大平台。Stripe 对中国个人限制很多,走到最后一步会卡死。他推荐 Dodo Payment,印度小哥做的,注册地在美国,响应速度快,能处理全球支付和各国税务合规,包括欧盟要求的 14 天无理由退款政策。

售后系统不要过早做。前期专注把主产品做好,用户量还不大的时候,手工回邮件、手工点退款就够了。很多程序员喜欢把所有东西都自动化,但这个阶段的精力应该全放在产品本身。

十三年的缝隙

这场对话里,tw93 反复说的一件事是:他的所有产品,都是先解自己的问题,然后发现有人跟他有同样的问题,才开源出去的。

这个逻辑听起来简单,但能坚持 13 年、做出 6 个有人用的工具,背后是他对「不做什么」的极度克制,对「做好一件事」的极度专注。

你把时间摊开看,就会发现这十三年的重量:一款工具的开发周期可能是几个长假,几个早起,几个游泳池边的午后。它们散落在一个人从青年到中年的缝隙里,没有声响,没有叙事,只有代码写完、摁下回车的那一刻。

他把长期主义解释为一种偷懒的方式,其实是这个道理:你把所有决定都提前做好,剩下的就是重复,是积累,是复利。而不是反复在十字路口消耗自己。

妙言迭代了半年才推出去,推出去之前数据一直很平。潮流周刊做了三年才有人注意到。每一个看似一夜爆红的产品,底下都压着漫长的沉默期。没有人看见的那部分,才是真正的时间成本。

如果你现在也在想做点什么,他的建议是:先找到那个让你自己最难受的问题,把它解掉。

这句话听起来像正确的废话。但你仔细想想就会发现,大多数人做不到,不是因为懒,而是因为他们的问题不够具体,不够痛。痛了才会动手,才会迭代,才会推到 GitHub 上,等一个陌生人发来一句「我要给你跪下」。

一个人被很多小问题和一个大痛点击中的瞬间,痛苦转化为创造,旁边站着感激的陌生人

游泳池边的笔记本还在。下一款工具,大概已经在某个假期的潜水间歇里,敲出了第一行代码。

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~

谢谢你读到这里。下次见。

原文媒体

图像

图像

图像

图像

图像

图像

图像

图像