利益相关声明:作者是文中 App「微诗」的开发者。

先说一个数字:按 CodexBar 的统计估算,这一次重做微诗,我烧掉了近 2 万美元的 token。
这还没算上 Suno 生成音乐、TTS 合成朗读、OSS 存储和服务器的费用。
没有融资,没有收费,也没有什么商业计划。花这些钱,只是为了把一个自己喜欢了很多年的东西,做成自己心里的样子。
故事要从十一年前说起。
2015 年 1 月,我做了一个小 App,叫「微诗」,上线时在 V2EX 发帖和大家分享过。
那时候它支持 iOS 8,内置了全唐诗和全宋词的数据库,可以离线搜索。功能谈不上多,界面也朴素,但那是我第一次把自己的爱好,做成一件可以拿出来和别人分享的东西。
十一年过去了。这中间它被搁置了很多年,我也几乎以为它会就这样留在旧硬盘里。今年,我从零开始把它重写了一遍,用的是 SwiftUI 和 WidgetKit,身边多了几个 AI 编程助手。
这篇文章想和大家聊聊微诗的过去和现在,也聊聊这一次重写里,哪些事 AI 帮了大忙,哪些事还得靠人自己拿主意。
一、2015:把一本诗集装进手机
毕业以后,我去了北京一家大型互联网公司,做移动端开发。
工作几年,手上攒了些经验,心里也慢慢冒出一个念头:我一直喜欢古诗词,能不能把这个爱好,做成一个有用的小工具,分享给同样喜欢它的人?
于是有了第一版:把全唐诗、全宋词装进手机里,不联网也能搜。在那个流量还很金贵的年代,「离线」是我最在意的一点——想读的时候,随手就能翻开。
上线以后,陆续收到不少用户的反馈。印象最深的是两类建议:一类希望加上注释和赏析,读到生僻的典故时能有个依靠;另一类希望加上拼音,因为很多字认得出形,却不敢确定读音。
后来,微诗慢慢有了更多用户,最多的时候,有近 10 万人在用它。这对一个业余做的小 App 来说,已经远远超出了我的预期。
它从头到尾都是为爱发电。工作之余,断断续续地更新,前后做了 6 个大版本。
用户的建议我一直记着,可一个人在业余时间里能做的总是有限,很多想法在待办清单里一放就是很多年。
二、2016–2017:创业,搁置
2016 年底,我离开公司,出去创业。创业公司里能分给一个业余项目的时间和精力少之又少;我的工作重心也从客户端开发,转向了服务端和公司的技术管理。到 2017 年前后,微诗最终停了下来,就此被搁置。
之后的几年,创业失败,我回到了大公司,也经历了一次职业上的转型。生活推着人往前走,那本装在手机里的诗集,离我越来越远。
可我心里一直没有真正放下它。那些曾经用过它的人,那些没来得及做完的想法,时不时还会冒出来提醒我:这件事,还没有做完。
三、2026:推倒重来

让我重新拾起这个爱好的,是今年 AI 能力的大幅提升。
离开客户端开发这么多年,如果要我一个人、只靠业余时间,把一款 App 从头做到自己满意的程度,过去我是不敢想的。而今年,和 AI agent 一起工作,让这件事第一次变得可行。
十年间,iOS 和 Swift 本身都已经变了太多,与其在旧代码上修修补补,不如重新开始。最后的决定是:从零开始,一行旧代码都不留。
技术栈很快就定了下来:界面全部用 SwiftUI,小组件用 WidgetKit。小组件本来就只能用 SwiftUI 写,主 App 和小组件共用一套视图和数据层,对一个人维护的项目来说,是最省心的选择。
新的微诗,我给自己定了三个词:美观、简洁、诗意。
我希望它是「装在手机里的一本诗集」——不是一个功能齐全的工具箱,而是一本你愿意偶尔翻开、翻开之后不会被打扰的书。
而这一次,诗不只是用来默读的。它可以被朗读,可以被吟唱,也可以化作一幅画。
四、现在的微诗有什么
每日一诗,跟着二十四节气走
打开微诗,首页是当天的一首诗。这首诗的选择,跟着二十四节气走。
我很喜欢这种安排。节气本身就是古人写给时间的诗,立春、清明、白露、霜降……用诗来标记日子,比一个冷冰冰的日期更像生活本来的样子。
锁屏上的一张诗笺

这是我自己用得最多的功能:一个放在锁屏上的「诗笺」小组件。
每天拿起手机看时间的那一下,顺便看到一两句诗。不需要打开 App,不需要做任何事,它就在那里。
锁屏小组件的空间非常小,而且系统会以单色方式渲染,能用的只有字形、字号和留白。在这么小的一方地方里,让一两句诗读起来仍然舒服,是我反复琢磨过的事。
一笔一笔画出来的山水

新版微诗里有一组动态壁纸:山水是一笔一笔画出来的。
我想要的效果,是像看一个人在纸上作画,而不是看一段特效。速度太快就没了意境,太慢又让人失去耐心,分寸全在一点点调出来的节奏里。
读、听、唱:一首诗的三种打开方式

古人的诗,很多本来就是用来吟、用来唱的。只用眼睛读,总觉得少了点什么。
所以这一版的微诗,诗不只可以默读:你可以听它被朗读出来(TTS),也可以听它被唱出来——这些曲子是我用 Suno 一首一首做出来的。
第一次听到一首熟悉的诗被唱成歌的时候,我愣了很久。字还是那些字,却好像换了一种方式走进了心里。
入画

诗中有画,是老话。这一次,我想让诗真的「入画」:每一首诗,都可以化作一幅画,让那些读过很多遍的句子,有一个可以看见的样子。
注释、赏析和拼音
当年用户最常提的注释和拼音,这一次都做进去了:每首诗都可以看注释、赏析,也可以显示拼音。
做完这个功能的那天,我想起了那些早年的用户。它晚到了十一年,但总算没有缺席。
尽我所能,做得好看一点
界面上的每一处,我都尽我自己的审美,把它做到了我能做到的最好看。它未必合每个人的口味,但每一个字号、每一处留白,都是我认真选过的。
免费
微诗是免费的。它从十一年前开始就是为爱发电,这一次也一样。
五、和 AI 一起写代码:它做了什么,我做了什么
这次重写,是在业余时间里,和 AI agent 一起完成的。网上关于 AI 编程的讨论很多,我只说说自己的体会。
AI 真正帮上忙的地方
搭骨架很快。 从零开始建一个 SwiftUI 工程、把数据层、主 App、小组件扩展之间的关系理顺,这些「知道该怎么做、但做起来很繁琐」的活,AI 完成得又快又稳。
补上我不熟的部分。 2016 年底之后,我的工作重心就转向了服务端和技术管理,中间错过了很多 iOS API 的变化。WidgetKit 的时间线(Timeline)怎么规划、锁屏小组件有哪些尺寸和限制,AI 能很快给出一个可以运行的起点,我再在此基础上读文档、改细节。
打磨细节。 很多技术细节,靠我一个人在业余时间里慢慢啃,可能要很久,甚至会半途放弃。AI 在这些地方给了我巨大的帮助,让我可以把力气花在真正在意的地方。
当然,这些帮助都不是免费的。
难的不是做出来
当然也不是一帆风顺。只是回头看,真正难的地方,和我原先以为的不太一样。
让 AI 把一个东西做出来,其实并不难。一个界面、一个功能、一种效果,说清楚了,很快就能看到一个能跑起来的版本。
难的是让它合乎审美,难的是决定哪些功能留下、哪些砍掉。说到底,是品味和取舍。
这两件事都没有标准答案,也没法一次说清。一版做出来,看着不对,推翻;再做一版,好了一点,还是不对,再改。一个功能做好了,用上几天,觉得它打扰了读诗,又拿掉。大量的反复和消耗,就藏在这一来一回之间。
开头那近 2 万美元的 token,大多是花在了这里。
品味,还是得自己来
写到这里,我最想说的是:AI 可以帮你把东西做出来,但做成什么样,得自己决定。
一首诗在屏幕上该用多大的字、行距留多少、标点要不要显示、页面上该有几个按钮——这些问题 AI 都能给出「合理」的答案,但「合理」和「好看」之间,往往还隔着很多次推翻重来。哪一版才对,只能自己一遍遍看、一遍遍改,直到心里那点别扭消失为止。
还有一类决定是关于「不做什么」的。AI 很乐于帮你加功能,每一个都不难实现。但我给微诗定的是「美观、简洁、诗意」,很多功能我最后都没有加。
我的感受是,AI 让「做出来」这件事变便宜了,于是「做成什么样」反而变得更重要。十一年前我卡在实现上,十一年后我更多时间是在想:这一页,配得上这首诗吗?
六、接下来
10 月 2 日,微诗更新到了 7.2.0 版本。
接下来要做的,是适配 iPhone Duo 折叠屏。iPhone Duo 将于 10 月 23 日发售,那天恰好也是霜降。
一款跟着节气走的 App,在霜降这一天迎来新的屏幕,我觉得是个不错的巧合。
写在最后
十一年前,我在大公司做移动端开发,业余写下了微诗的第一行代码;十一年后,我依然是在业余时间里,和 AI 一起把它从头重写了一遍。中间隔着一次创业、一次失败、一次转型,和很多年的搁置。
近 2 万美元的 token,换算成任何一种回报,大概都不太划算。但如果要我再选一次,我还是会这么做。人这一辈子,总该为自己喜欢的东西,认真地花一次力气。
微诗现在仍是一个人做的小 App,一定还有很多不够好的地方。如果你愿意试一试,非常希望听到你的反馈和建议:哪里用得顺手、哪里让你皱眉、你希望它多一点什么,或者少一点什么。
也想问问大家:你在手机上读诗吗?什么时候读?
下载地址:App Store · 微诗(免费)
