零推广、不写代码、三个月两万下载:一个代码小白的开源之路
三个月前,我给自己定了个听起来有点狂的目标:做一个最好用的免费 Markdown 编辑器。
狂的地方不在「最好用」,在「免费」——更在,我不会写代码。
三个月过去了。这个叫 SoloMD 的东西,发了 30 个版本、被下载了两万两千多次、GitHub 上涨了四百多颗星。而这三个月里,我几乎没花力气推广。 下面是这段路我怎么走的。
先说结果,免得像在画饼
我不喜欢一上来就讲情怀,先把数摆出来,你自己判断这事真不真:
- 4 月 8 号建的仓库,到今天差不多三个月。
- 三个月里发了 30 个版本,现在到了 v4.8.9——平均三天一个版本,我自己都觉得有点猛。
- GitHub 417 颗星、25 个 fork,MIT 协议,谁都能拿去改。
- 全平台加起来,下载两万两千多次。
最想让你注意的一条:这些不是砸钱投出来的。 我没投广告、没找人写测评、没做什么增长黑客。就是按着 AI 给我的分发建议,把它发到该发的地方,然后……就这样了。产品自己在走。
我想做的,是一个不拿用户当韭菜的免费软件
为什么非要「免费」?因为免费软件这潭水,早就浑了。
你想给一张 PDF 去个水印,随手装了个免费工具,结果第二天它开始弹广告、改你浏览器主页、后台偷偷传数据,导出还要你先充会员。「免费」成了一个钩子,把你钓进去,再一刀一刀割。 用户在免费软件这儿,早就习惯了被当成韭菜——被当商品卖、没人真心打磨、免费只是逼你付费的诱饵。
我受够了这个。所以 SoloMD 从一开始就立了几条死规矩:免费、开源、零广告、零遥测、本地优先。 你的文件在你自己电脑上,我碰都碰不到,也没兴趣碰。它的 slogan 就一句话——One file. One window. Just write.(一个文件、一个窗口,专心写。)
「最好用的免费」这五个字,重音其实不在「免费」,在「最好用」。免费不该等于将就。 一个东西免费,不代表它就该塞满广告、卡顿、丑。我想证明的恰恰是反过来:免费,也可以是这一类里做得最用心的那个。
所以「最好用」不是一句空话,是一堆具体的较劲:整个程序压到十几兆,不是那种装完占你一个 G 的臃肿货;Windows、macOS、Linux、还有手机,五个平台都能用,你在哪写都一样;界面做了十几种语言,不只服务说英文的人;数学公式、流程图这些写作者真会用到的,直接支持,导出 PDF、Word、HTML 一键搞定。这些没有一样是「免费所以就不做」的借口能挡住的——它们只是需要有人愿意花心思。 我图的就是这个「愿意花心思」:证明一个免费软件,可以不糊弄。
我一行代码都不会写,这事我不藏着
讲到这儿你大概会问:你既然不会写代码,这两万人下载的东西,是谁写的?
全是 AI 写的。我一行生产代码都没碰过。
这不是谦虚,是字面意思。SoloMD 的每一行代码、每一次报错修复、每一个版本迭代,都是我把想要的东西说清楚,然后 AI 把它建出来的。我干的活,从头到尾只有一件——把「我要什么」讲明白。
所以对我这种小白来说,最难的从来不是「写代码」,是「说清楚」。
- 「做一个 Markdown 编辑器」——这么说,AI 给你的是个能用但平庸的玩意儿。
- 「做一个只有一个文件、一个窗口,打开就能写、不被任何东西打扰的编辑器;左边不要文件树,顶上不要一排按钮,我要的是那种打开就想写字的安静」——这么说,出来的才是我心里那个。
区别不在技术,在你能不能把自己脑子里那个模糊的想法,逼成一句 AI 能照着做的话。 这三个月我真正练的,是这个。不会写代码没挡住我,反而逼我把每个需求想得更透——因为我没法自己下场糊弄,我只能说清楚。
而「说清楚」这件事,往往一遍不够。三个月 30 个版本,很大一部分就是「我以为我说清楚了,其实没有」的来回。 举个真实的例子:我想让编辑器在你写着写着的时候,自动保存,别让你手抖没存丢东西。我第一次说「加个自动保存」,AI 给了我一个每隔几秒存一次的版本——听着没错,可用起来烦:光标一停它就存,硬盘一直在响。我得回去把话说得更细:「空闲两秒再存、存的时候别打断我打字、别在标题栏闪『已保存』分我的心」。改到第三版,那个『安静地在背后保存』的手感才出来。 三十个版本,多半是这种打磨——不是 AI 不行,是我一开始没把「我到底要什么感觉」想透。
「不懂技术」在今天不是短板,是让你被迫专注在「到底要什么」上的一种优势。 我是拿两万次下载信这句话的。
三天一个版本,是一种我以前想都不敢想的节奏
顺便说说那 30 个版本。三个月发 30 个,平均三天一个,这个速度对一个小白意味着什么——意味着我脑子里冒出一个「要是能这样就好了」的念头,当天下午就能用上。
有人在 GitHub 上提了个 issue 说某个快捷键在他系统上冲突了,我看懂了他要什么,跟 AI 说清楚,当晚就发了新版让他更新。这在「我得先学会写代码」的年代,是不可能的——那时候一个小白从想法到能用,中间隔着几个月的学习断崖,大多数人就在断崖前放弃了。 现在这个断崖没了。想法和成品之间,只剩「你说不说得清」这一步。
节奏快带来一个我没料到的好处:产品是跟着真实用户一起长出来的,不是我一个人在屋里憋出来的。 谁提了个真痛点,三天内就能变成新版本,用户能感觉到「这软件在听我说话」。这种即时的来回,比任何广告都黏人。
我从第一天就赌了一件事:用它的,已经不只是人了
如果 SoloMD 只是「又一个干净的免费编辑器」,它不会让我这么上心。它背后有个我从第一天就下的赌注:
软件的使用者,已经从「人」,变成了「AI 和人」。
想想你现在怎么写东西。你自己敲一部分,然后让 Claude、让 Codex、让 Cursor 帮你改、帮你续、帮你整理。你的笔记库,早就不是只有你一个人在动了——AI 也在动它。 可市面上几乎所有编辑器,还当用户只有一个人:你。它们把 AI 当成一个缝在角落的聊天框,而不是一个和你平起平坐、能直接读写你文件的「用户」。
所以 SoloMD 从一开始就不是「一个内置了 AI 的编辑器」。它内置了一个 MCP server——意思是,Claude Code、Codex、Cursor 这些 agent,可以直接驱动你的整个笔记库:读你的文件、改你的文件、按你的话组织你的文件,而不用你在聊天窗和编辑器之间来回复制粘贴。同时它支持十四家 AI、你自己带 key(BYOK),不锁死在任何一家。
具体是什么体验?打个比方:你可以直接跟 Claude 说「把我这个月所有带『待办』的笔记翻出来,合并成一份清单,按紧急程度排好」——它就通过 MCP 进到你的库里,把这活干了,改动直接落在你的文件上,你在 SoloMD 里眼看着它变。你不再是那个在两个窗口之间搬运文字的中间人;AI 成了你笔记库的另一双手。 这就是「用它的不只是人」落到实处的样子:一个人类用户,一个 agent 用户,共用同一个库。
这不是做着做着长出来的功能,是我建它的第一天就认定的方向。 因为我赌的是:往后每一个还活着的软件,都得回答一个问题——当用你的不再只是人,你这东西该长什么样。 SoloMD 是我对这个问题交的第一份答卷。
有人打赏了我 10 块钱
这三个月最让我记到现在的,不是四百颗星,也不是两万次下载。是有个用户,给我打赏了 10 块钱。
十块钱,买不了什么。但那一下我盯着屏幕愣了好一会儿。因为那不是十块钱——那是有一个我素不相识的人,用了我做的东西,然后觉得「这玩意儿值,我想谢谢你」,真的动手掏了钱。
星星是免费的,点一下就走。下载也是,试试不好用就删。可掏钱不一样,哪怕只是十块——那是「被肯定」实实在在的重量。 一个不会写代码的人,对着 AI 描述了三个月,做出来的东西,被一个真实的陌生人认可了。那种喜悦,我到现在想起来还是热的。
我把那十块钱截了图,存在一个专门的文件夹里。不是为了钱——十块钱能干嘛呢——是想在往后哪天做不动、想放弃的时候,翻出来看一眼,提醒自己:我做的这个免费的、我碰不到你数据的、安安静静的小编辑器,真的有一个陌生人,需要它、并且谢过我。
我几乎没推广,那两万次下载是怎么来的
前面说了,我没使劲推。那两万人是从哪儿冒出来的?
老实讲,我做的分发动作特别朴素:就是按着 AI 给我的建议,把它该发的地方发了一遍。 GitHub、该挂的目录、几个开发者会去的地方——AI 告诉我发哪、怎么写,我照做,仅此而已。没有投放、没有刷榜、没有营销团队。
能走到两万,靠的不是我推得多用力,是产品本身替我说了话。 一个真免费、真干净、真为「AI+人」这个新用户设计的编辑器,用过的人里总有一些愿意点个星、发给朋友、写进自己的工具清单。开源和口碑,是不花钱但最慢也最实的那条路。 我没有别的路——我没有预算——但回头看,这条慢路反而逼我把产品做扎实:因为我推不动的东西,只能靠它自己好到让人愿意替我推。
三个月,30 个版本,417 颗星,两万两千次下载,一个十块钱的打赏。对一个三个月前还不会写代码的人来说,这条开源之路,比我敢想的走得远。
但我最想说的其实不是这些数字。是这件事本身证明了一件我一直在讲的话:你不需要会写代码,才能做出一个有人真正需要的东西。你需要的,是把你想做的那个东西,说清楚——然后动手,别停在想。
我还在往下做。SoloMD 离我心里「最好用的免费 Markdown 编辑器」还差得远——还有一堆手感没打磨到位、还有一堆人提的需求排着队、agent 驱动那块也才刚开了个头。但正因为它开源、正因为迭代快,这些欠的债我一笔一笔还得起。 至少现在我知道:这条路,一个连代码都不会写的小白,也走得通。
延伸阅读
- SoloMD 官网 / 开源仓库:solomd.app · GitHub
zhitongblog/solomd - 本站相关:为什么我要重做 100 个免费软件
- 本站相关:我又做了一个终端 Unterm:默认用户不是人
讨论