和 AI 结对写一个 Mac 阅读器:三个决策比代码更重要
一、起点:找不到想要的,就自己做一个
作者的需求很具体:一个像 macOS"预览"一样轻快、双击即开、有原生质感的 EPUB 阅读器。找了一圈没找到,于是决定和 AI 结对开发,最终做成了 Silverlinger(余阅),免费提供给 Mac 用户。
这个过程里最值得看的不是代码,而是三个产品决策——它们决定了这个软件"像不像 Mac 应用"。
二、决策一:文档优先,别再造一个书架
大多数阅读软件打开的第一件事是"导入书库",然后给你一个充满封面和分类标签的复杂界面。作者的判断相反:访达(Finder)本身就是 Mac 上最好的文件组织工具——文件夹分类、颜色标签、聚焦检索,全都现成。阅读器何必再造一个封闭的轮子?
落到实现上是三条硬规则:
| 规则 | 具体做法 |
|---|---|
| 书留在原处 | 双击任意 EPUB 直接开读,支持拖拽、⌘O、打开最近使用 |
| 只读访问 | 不强制导入,不在私有书架里克隆一份占双倍磁盘 |
| 缓存守规矩 | 解压缓存放系统标准 Caches 目录,随时可清空,原文件不动 |
还有一个容易被忽略的细节:读到一半的书,如果整理时挪了文件夹或改了文件名,再次打开时仍能精准识别,并恢复阅读进度、书签和高亮笔记。这背后是"识别书本身"而不是"识别路径"的设计选择——用户永远会整理文件,软件必须接受这个事实。
三、决策二:换字体不能把整本书熨平
很多阅读工具处理字体非常粗暴:你选一个新字体,它就用全局选择器把全书所有文字统统替换。但一本认真制作的 EPUB,正文、引言、诗词、题记往往有精心编排的字体反差。
读《红楼梦》,正文是宋体,中间插入的《西江月》或判词通常是楷体;技术书里正文字体换了,代码块和引用段落仍应保持特定视觉特征。一刀切的结果,是整本书被"熨平"成索然无味的纯文本。
解法是给"换字体"加一个开关:勾选"保留原书字体风格"后,更换正文字体只作用于普通段落,书中特设的引文、诗词和特定样式完整保留。
另一个坑是中文字体名兼容:不少中文 EPUB 在 Windows 环境下排版,样式表里硬编码了 SimSun、SimKai、Microsoft YaHei。直接套用会回退成默认无衬线字体。做法是内置别名映射,把常见的 Windows 字体声明自动关联到 Mac 本机对应字体。
做阅读器,一半功夫在"不让用户的阅读体验被技术细节破坏"。
四、决策三:把交互做得像不存在
阅读最怕被打断。三个小设计都是围绕"减少操作步骤":
- 查词典。选中文本右键"查询",调用 macOS 原生词典,查完即隐,不跳窗口。
- 注释跳转。点击注释跳到文末,一步返回原处,不用记页码。
- 心得卡片。读到有感触的地方随手记,卡片与原位置绑定,日后可回看。
这些功能没有一个是"创新",但每一个都在减少摩擦。原生应用的价值往往就在这里:不是功能多,而是顺。
五、给想做小工具的人三条建议
- 从一个自己每天都在忍的痛点开始。作者做这个软件,是因为自己每天都要在 Mac 上看书。痛点越具体,需求越清楚。
- 先定原则,再写功能。"文档优先""只读不复制""缓存守规范"这三条一旦定下,后面每个功能该不该做都有了判断标准。
- 让 AI 写实现,你写判断。AI 能快速产出代码,但"该不该造书架""要不要做全局替换"这类决策,只能由懂用户的人来做。
这也是 AI 时代独立开发最真实的分工:门槛从"会不会写"降到"想不想清楚"。想清楚的人,一个人就能做出一个完整产品。
猜你喜欢
YOU LIKE- 零信任架构到底怎么落地?用 WireGuard 搭一张网状 VPN 的思路拆解
- 淘宝购物津贴什么时候有:4 个大促 + 3 条抵扣规则
- 免费思维导图软件怎么选:8款在线工具免费版限制对比
- 夏威夷披萨家常做法:菠萝配火腿的酸甜组合
- 用 U 盘重装系统:从做启动盘到进 PE,四步让老电脑满血
- 北京公租房房源从哪来:新项目 3057 套、摇号剩余 1504 套,差别在哪
- ChatGPT 生图怎么写提示词:用「两栏法」让出图更可控
- 花朵肠仔包十大做法大全
- 应届生面试技巧:把"没经验"讲成"有准备"
- 香辣牛蹄筋家常做法:卤、拌、烧一锅鲜
- 有氧运动 vs. 力量训练:哪种减肥效果更好?
- 7 天减脂计划:每天一个小目标,一周后能带走什么
- 联通宽带测速慢?从硬件到信道的实用提速清单
- 3 个今天能试的 AI 能力:Claude 实时仪表盘、SynthID 验真、免费漏洞扫描
- 买家具选极有家还是天猫?平台定位决定质量底线
- 备考注会一年三次过六门的上班族如何平衡工作与生活并坚持到考试最后一天 - 会计魔方网
- 同事偷偷在公司电脑上跑 AI 智能体,风险到底在哪
- 网易域名邮箱SMTP总报"535认证失败"?服务器地址和端口先配对
