才发现入职菊厂以来就再也没有写过个人博客了。最近把 AI-Infra 重新捡了起来,肝了两个周末,在 AI 的帮助下写了一篇长篇巨著《大模型推理系统揭秘:从 vLLM 看 LLM Serving Infra 核心技术》。真的是长篇巨著,将近 20 万字,所以又把它拆成了十几篇文章。
然后就有点收不住了。写完 vLLM 发现前面还有一大堆东西值得系统地梳理一遍:Python 和 C++ 在 AI-Infra 里到底用到哪些语言机制、PyTorch 从 Tensor 到 Dispatcher 到编译器是怎么串起来的、Transformer 的算量和数值怎么算、CUDA Kernel 怎么从 naive 写到 FlashAttention、NCCL / RDMA 通信、千卡训练的并行与容错、AI 平台工程、最后是怎么给 PyTorch / vLLM 提第一个 PR。整理下来变成了十个系列、近百篇文章,大概是这个博客过去十年产量的总和。
写这么多,自然就想让它们好读一点。于是顺便把博客也更新了一下——本来只是想改个目录样式,结果一路改下来,几乎把能碰的地方都碰了一遍。这篇记个流水账。
一、读起来更顺手
1. 右侧目录:可收起、可过滤
把文章详情页右边的 OUTLINE 样式优化了一下,可以展开收起来,随滚动高亮当前章节;顶部多了一个过滤框,两三万字的长文,输入几个字就能直接跳到想看的小节。


2. Markdown 对齐 GitHub 风格,支持 Mermaid 和 LaTeX
整个 Markdown 样式向 GitHub 对齐,并且支持了 Mermaid 图表和 KaTeX 数学公式。考虑到 Mermaid 生成的图可能比较大,点图表或图片右上角的「放大」按钮会弹出单独的图层,可以拖动、滚轮缩放、双击复位。别说,Mermaid 画出的图其实还挺好看的。

3. 文章头部多了一行”小字”
发表日期、最后更新日期、预计阅读时间和字数之外,标题下还列出阅读、点赞、评论和分享数。阅读时长是按去掉代码块之后的字数估的,还算靠谱。
4. 系列文章导航
十个系列、近百篇文章,仅仅靠”上一篇 / 下一篇”是翻不过来的。现在系列信息写在文章的 front matter 里,页面自动生成三样东西:文首的「本文是《…》系列的第 N 篇(共 X 篇)」引用块、文末的系列目录,以及把 Previous / Next 换成系列内的上一篇 / 下一篇。


二、Slides:用 Markdown 写 PPT
基于 reveal.js 实现了 SLIDES 功能,可以用 Markdown 在线写 PPT 了,样式参考了 SlideShare,个人感觉还挺好看的。有一个 Slides 独立页面做索引,也可以用 keynote 布局把一份幻灯片嵌进一篇文章里,上面是片子、下面是讲稿和评论。


三、搜索和归档
站内全文搜索把原来的 Google CSE 换成了本地索引 + 前端检索:支持标题 / 标签 / 正文匹配、命中高亮,速度快多了。先载入标题表,查询时再按需读取对应的索引分片和结果正文。

Archive 新增 Go to article:实时过滤 + 键盘导航(↑ / ↓ / Enter / Esc)+ 点击跳转,三百多篇文章不用再一路往下滚。

四、悬停就能看的解释
写技术文章常碰到一个矛盾:有些名词需要解释一下,但又不想在正文里岔开去讲。以前的办法是加个链接让读者自己跳出去,现在有两种更省事的:
- 脚注:还是用标准的 Markdown 脚注语法写,但读者把鼠标放到脚注编号上,解释会就地弹出来,卡片里可以有代码、表格、公式。点编号才会真的跳到文末。
- 带
?的虚线词:一两句话能说清的名词,直接悬停显示。


站外链接会带一个小 ↗,点了在新窗口打开,站内链接不带。手机上这些都是”轻触”版本。
五、划线评论:这次最想让你试的功能
这是这轮更新里花时间最多、也最想让大家试一试的部分。
以前的评论区是文末的一个 iframe(多说、Disqus、giscus 一路换过来),读者想针对某一句话说点什么,只能在底下留言”第三节第二段那里……”。现在的做法更像微信读书或者 Code Review:用鼠标选中正文里任意一段文字,选区上方浮出一个小工具条——「点赞」「评论」「收藏」「复制」「搜一搜」和「分享」。

点「评论」,段落下方就地展开一个输入框,顶部引用着你选的原文。支持 Markdown,有撰写 / 预览和一排格式按钮。

发表之后,那段文字下方会出现琥珀色虚线,段尾多一个带数字的小标记。点标记或点划线,就能展开这段文字下面的全部讨论——回复、投票,作者的回复带一个「作者」小徽章。同一段文字只有一个讨论串,不会各说各的。
拉到文章底部还是传统的评论区,同一个讨论串,同一套编辑器。几个顺手加的东西:
- 文章操作栏里的「点赞」按钮——觉得文章有用点个心,不用登录;标题下面和首页列表会分别显示阅读、点赞、评论、分享数。这是比阅读量更有信息量的反馈。
- 每条评论右侧有 ▲ 分数 ▼,赞同或反对,一人一票。
- 一篇文章被划了多处之后,评论区顶部会出现「最受关注的段落」——被划得最多、投票最高的几句话,某种意义上就是这篇文章的读者版摘要。
- 发现我写错了,发表时勾上「同时提交 Issue」,会在博客仓库开一个 Issue 并署你的名字,评论上带一个红旗徽章——这是我处理勘误的工作队列。

评论和回复存在这篇文章对应的 GitHub Discussions 里;阅读、点赞和分享等计数由 Worker 记在 D1,评论图片存到 R2。登录用 GitHub,本站不保存任何凭据。自己发的评论可以原地编辑、删除;有人回复你,GitHub 会按你的通知设置发邮件。
六、手机上也一样
页面是响应式的:手机上侧栏挪到底部,文章目录可通过 OUTLINE 打开;代码和表格左右滑动而不是挤在一起。默认字体走系统字体栈,不下载网络字体;「Aa」阅读设置还可切换衬线字体。脚注和术语解释、划线评论都能触控操作;图表和图片点「放大」按钮查看。

七、Tech 和 Life 分开
博客里除了技术文章,偶尔也有几篇随笔——瑜伽、感恩节、走出象牙塔之类。以前它们混在技术文章的时间线里,基本没人看得到。现在导航栏分成 Tech 和 Life 两栏:首页只放技术文章,生活类的去 Life 页面,用各篇的题图做卡片。首页还支持置顶,把《致读者的一封信》钉在了最上面——那篇是给读者看的”说明书”,上面说的这些功能怎么用,那里写得更细。


八、看不见的部分
还有一些读者感觉不到、但让我省心不少的改动,一句话带过:
- GitHub Pages 从自带的 Jekyll 3 构建换成了 GitHub Actions + Jekyll 4.4,本地和线上终于是同一个版本;每天凌晨定时构建一次,写好未来日期的文章会自动在那天上线。
- 每次提交都跑一遍 CI:构建、用 lychee 检查全站两万多个内部链接和锚点、再用无头 Chrome 把改动的文章真的渲染一遍,看 Mermaid 有没有画出来、图片有没有 404。每周一还会检查一次外链,坏了就自动开一个 Issue。
- 文章图片全部转成 WebP(20 MB → 5.8 MB),Font Awesome 改成只含用到的图标的子集(77 KB → 20 KB),CSS / JS 的链接带上按文件内容算的指纹,改了样式就换新地址,不会被浏览器里的旧缓存卡住。
- 补齐了 Open Graph / Twitter Card / JSON-LD、RSS 自动发现、强制 HTTPS——分享到微信和推特时终于有正常的卡片了。
顺便说一句,这轮改动里的大部分代码是和 AI 结对写出来的:我说要什么、看效果、挑毛病,它写。写文章也是类似的分工。效率确实和以前不是一个量级——但要什么、什么是对的,还是得自己想清楚。
九、一个月后,又多了这些
发出这篇以后,我自己又连着写了不少长文,才发现还缺几件用起来顺手的小东西:
- 长文读累了,底色可以换成护眼米黄,也能点专注模式;章节可以折起来,进度会记着下回接着看,大纲也能切成思维导图。
- 系列多了,我不想每次从头找进度:学习地图会显示系列进度,文章可以标已读,系列也标了难度;文章和摘录还能收进收藏。
- 找旧文或文里的一句话,按 ⌘K 就能搜全文;站内链接停一下先看摘要,文末的 LINKED FROM 也能顺着找到引用它的文章。归档现在可以筛选,也能切成卡片。
- 想对一句话提意见,按 ⌥S / Alt+S 截一块,图片先复制到剪贴板,贴进评论框才上传;划线能生成分享图,Mermaid 图里的文字也能直接评论。「存疑」入口我后来去掉了。
- 地铁上、飞机上没网也能接着读:读过的文章会存在浏览器里,断网打开时顶部标一句「离线版本」和缓存时间。联网时还是先取最新的,我改了文章或样式,你刷新一次就能看到。
- Moments 现在是卡片流,旁边有热力图、每日回顾,也能直接看视频;找旧随笔不用再按月份往下翻。
这些怎么用,我写在《致读者的一封信》里了。
最后
博客地址:https://arganzheng.life/,基于 GitHub Pages 搭建,喜欢的同学可以直接 fork。
感觉还是要把博客重新捡起来,强迫自己学习和思考。与君共勉。
本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/blog-is-back.html)的前提下,欢迎各种形式的转载、翻译或商业引用。
COMMENTS
评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。