返回文章归档

2026-05-15

从能用到愿意用:阅读体验、CI/CD 和一堆细节债

AI Reader 从功能 demo 走向日常工具的一轮还债:Markdown 渲染、阅读页、动效和自动部署。

AI ReaderRSSCI/CDEngineering Log

这一天主要在还债

5 月 15 日我主要在还债。

前一天 AI Reader 已经能打开、能评分、能问答,但离“每天愿意用”还差很远。最大的问题是细节不稳:按钮会跳,Markdown 原样显示,阅读页排版压缩,Agent 抽屉收起很突兀,部署还要我手动去 VPS 操作。

功能能跑,只是第一步。每天都想打开,才像一个工具。

Markdown 不能按调试文本显示

Agent 回答一开始直接用 <pre> 展示,所以 ## 结论、列表、引用全部原样露出来。

功能没错,但体验很像调试工具。后来我做了一个轻量 Markdown 渲染组件,只支持标题、段落、列表、引用、粗体、行内代码和链接,不引入完整 Markdown 库,也不渲染原始 HTML。

这个方案很克制,但够用,也更安全。

阅读页要让正文当主角

专注阅读页也做了调整。

早期正文像被塞进卡片里,两边留白和内容宽度都很别扭。后来把正文改成更宽的居中文栏,降低顶部按钮和评分区的视觉占用,再把 Agent 做成底部抽屉。

这个变化不算大,但使用感差很多。阅读器不是后台管理系统,正文必须是第一主角。

动效只服务交互壳层

我不想做花哨动画,但折叠面板直接闪回确实难受。

于是引入 motion,只用在交互壳层:弹层、抽屉、侧栏折叠、按钮反馈。这里我给自己设了边界:动效不能侵入业务逻辑,不能为了动画重写状态。

后面抽出 AnimatedPaneluseDismissableLayer,评分设置、排序菜单、Agent 抽屉都能复用。

CI/CD 是产品化的一部分

更大的变化是 CI/CD。

之前每次部署 staging 都要我在 VPS 上手动 pull、deploy、看日志。这不符合持续交付。于是我把流程改成 GitHub Actions 构建镜像、推 GHCR,VPS 只拉镜像部署。staging 自动部署,prod 手动批准。

这个改动一开始也踩坑:SSH key 格式、secret 校验、VPS dirty 文件都会让自动部署失败。最后加了 base64 key 支持、部署 secret 预检,也把本地 agent 文档从仓库跟踪里清掉,避免云端仓库越来越像个人笔记本。

这一天的主题其实是产品化。不是加更多 AI 能力,而是让已有能力更稳定、更像一个工具:按钮不跳,回答不乱,部署不靠手,页面不报错。

很多用户感知不到这些工程工作,但没有它们,产品永远停在 demo。

相关产品

评论