Refactoring English(《重构英语》):第 16 个月
一句话总结
接近终点
亮点
- 我凭借一篇一气呵成写就的文章登上了Hacker News 首页。
- 预计未来几年软件安全形势会令人担忧。
- 我已完成了家庭照片分享应用的首个里程碑。
目标评分
每个月初,我都会公布当月的目标。以下是完成情况:
完成《重构英语》
- 结果:发布了新的一章,但仍未完稿
- 成绩:C
我知道要在一个月内完成最后三章是个雄心勃勃的目标,但我觉得可行。最终只完成了三章中的一章,不过这本书已接近完成。
《重构英语》指标
| 指标 | 2026年2月 | 2026年3月 | 变化 |
|---|---|---|---|
| 独立访客 | 7,788 | 6,932 | -856 (-11%) |
| 预售收入 | $886.20 | $725.80 | -$160.40 (-18%) |
本月访问量和销量略有下降,但我很高兴看到,即使没有成功的推广,依然有稳定的读者和客户持续流入。
本月我唯一的推广是一篇名为“哪份设计文档是人类写的?”的文章。它在Lobsters 上表现不错,但在Hacker News 上反响平平。/r/programming 版块以“AI 生成”为由拒绝了它,即使我在私信版主澄清文章本身是人类撰写的之后也是如此。
这篇帖子的灵感来自上一堂《重构英语》直播课。我们讨论了 AI 是否已经足以胜任撰写设计文档,我突然意识到,要为我刚手写的设计文档生成几个 AI 版本是多么容易。阅读大家对不同设计文档中“破绽”的猜测很有意思,看看他们是如何判断哪份是人类所写、哪份是 AI 所写的。
发现一次效仿 Simon Willison(西蒙·威利森)的机会
西蒙·威利森在过去三年里一直是 Hacker News 上最受欢迎的博主。我最近撰文探讨过威利森那种尚未被充分利用却十分有效的博客策略:
西蒙·威利森经常在封闭平台(如 TikTok、Twitter)中发现创意,然后简单地把它们搬到开放网络上,这样更便于 HN 展开讨论。他最受欢迎的一些帖子,仅仅是附带一点评论的简短引用或链接。“我担心他们把 co-pilot 放进了 Excel”只是他从 TikTok 上看到的一段视频的引用。“计算机永远无法被追责”则是西蒙·威利森对几条推文的总结。
西蒙·威利森曾将这种做法称为“一种低投入、高价值的为整个互联网生活做贡献的方式”,我对此表示认同。
威利森策略中唯一困难的部分是判断何时使用它。如果你只是随机地总结推文和 TikTok,很可能不会获得太多关注。你必须敏锐地发现某些有趣的信息被困在了不利于网络传播的格式中,然后在热度尚存时将其搬运到开放网络上。
上周,我观看了 Nicholas Carlini(尼古拉斯·卡利尼)的“Black Hat LLMs”演讲,意识到这正是一次运用威利森技巧的机会。
在演讲中,卡利尼描述了他如何在 Linux 内核中发现了一个隐藏了 23 年、可被远程利用的漏洞。令人惊讶的是,任何人本都可以做到卡利尼所做的事。他只是把 Claude Code 指向 Linux 内核源码中的每个文件,让它去寻找漏洞。
我在网上搜索关于卡利尼这一发现的讨论,却惊讶地发现几乎无人谈论。它已发布在 YouTube 上,并在一个 Hacker News 帖子中被提及,但受到的关注远低于其应有的程度。人们都在热议 Claude Code 为一个 FreeBSD 漏洞编写了利用代码,但我觉得这个发现才是更大的新闻。
事实证明我的判断是对的。
我用三小时一口气写完了那篇文章,远比我通常花 10 到 30 小时、历时数周的写作过程要快得多。这篇文章至今已吸引了 4.1 万名独立读者。它在Hacker News和Lobsters上都表现不错。尽管我甚至没有在 Twitter 上发布,仍有近一半读者是通过 Twitter 找到这篇文章的。
过去,当我的个人博客上的文章走红时,许多读者会深入挖掘并发现《重构英语》。这一次却没有,我猜是因为对 AI 感兴趣的读者对一本关于不用 AI 写作的书不太感兴趣。
未来几年软件安全形势将十分严峻
卡利尼的演讲凸显了我几个月来一直在思考的一点:未来几年网络安全状况会相当糟糕。
过去,普通人还能从网络攻击中获得一定程度的保护,因为发现安全漏洞的成本很高。
例如,假设半年前你想入侵运行Syncthing(一款开源文件同步工具)的用户。除非你是软件安全专家,否则你必须雇佣一个这样的人:
- 擅长发现漏洞
- 愿意接受付费将其武器化
- 愿意与陌生人合作
假设你找到了一个愿意以 5000 美元的价格为你寻找并利用 Syncthing 漏洞的人。这仍然需要大量的工作和金钱。而且还得假设你雇的人是真心的,而不是在骗人。
即使你费尽周折完成了这些,每次使用漏洞时都有“烧掉”它的风险。如果有人发现自己的系统被入侵并追溯到 Syncthing,他们可能会识别出你的漏洞并报告这个缺陷,从而让你的利用代码变得一文不值。
再看看今天的情况。你只需花 100 美元/月订阅 Claude Code,就能像卡利尼那样发现关键漏洞。Claude Code 的护栏会使其拒绝将漏洞武器化的请求,但用不了多久,你就能在没有任何 AI 供应商阻拦的情况下,用 open-weight models(开放权重模型)秘密开发利用代码。
因此,开发利用代码的成本已大幅下降,但修复漏洞的价值却保持不变甚至更低。由于 AI 生成的漏洞报告太多,供应商正在关闭其 bug bounty(漏洞赏金)计划,不再向诚实的研究人员支付任何报酬。
卡利尼所做的并非偶然。我复现了他的做法,在一个热门代码库中毫不费力地发现了一个此前未被发现的 remote code execution(远程代码执行)漏洞。我很可能还能发现更多,但对我来说经济价值是负的,因为该项目没有 bug bounty,所以我要花费数小时与供应商协调修复,却得不到一分钱。
这并不是某家贪婪的亿万美元公司拒绝为我发现的漏洞付费。维护者只是一个出于善心维护项目的普通人。这基本上就是那幅“Dependency”xkcd 漫画所描绘的情形。他没有钱来支付漏洞报告,因为他自己也没有报酬,尽管亿万美元的公司确实在使用他的代码:

xkcd #2347,“Dependency”
最终,我们会回到一个均衡状态,那时 AI 安全工具会像今天的 static analysis(静态分析)工具一样便宜易用。供应商会在问题进入生产环境之前就用 AI 捕捉到安全问题。
短期来看,有大量突然变得唾手可得的漏洞;对攻击者而言利用它们是有价值的,而对诚实的研究人员而言修复它们的价值却不大。
达成 Little Moments 的首个里程碑
早在 12 月,我就宣布要创建一个免费、开源的婴儿照片分享应用,因为我讨厌现有的选择。
我原以为这个应用可以轻松地用 vibe coding(氛围编程)完成,但随后我意识到这是一个练习撰写 design doc(设计文档)的好机会。我一直在为《重构英语》撰写关于设计文档流程的内容,但我已有近十年没有写过一份真正的、完整长度的设计文档了。
当 vibe coding 在短期内更令人满足时,要静下心来写设计文档对我来说很难。这就是为什么从 12 月到现在才完成,但我最终还是集中精力为我的应用 Little Moments 写完了设计文档。一旦设计文档完成,剩下的就容易了。
目前,你可以导入从TinyBeans 导出的数据并在本地渲染。我不想展示真实的私人家庭照片,所以我创建了用于测试的虚拟数据:
即便是这个最小化的实现也让我感到非常兴奋,迫不及待想完成它。
如果你从未用过 TinyBeans 或 PhotoCircle,可能会觉得我对这个极其基础的应用原型如此兴奋很奇怪,但我必须强调,那些应用的用户体验有多么糟糕。
即使是查看下一张和上一张照片这种基本流程,在 TinyBeans 上也无法正常工作。如果你正在查看一张照片,必须先返回到照片索引,然后再找到下一张。而这还是在移动应用上的情况。在网页应用上,你甚至无法按顺序查看照片;必须在日历上查找。更糟的是,到处都是广告和付费推广,而且一切都慢得令人痛苦。
Little Moments 速度非常快,而且我添加了键盘快捷键和移动端滑动手势,让导航更加轻松。我很期待完成这个应用,彻底告别 TinyBeans。
总结
完成了什么?
- 发布了“Claude Code 发现了一个隐藏 23 年的 Linux 漏洞”
- 发布了“哪份设计文档是人类写的?”
- 发布了《重构英语》中“帮助读者达成目标”一章
- 完成了我对 Firefox 的首次贡献,修复了一个可导致畸形 Ogg 文件崩溃的小问题。
经验教训
- 未来几年网络安全形势将十分严峻
- 对恶意行为者而言,发现漏洞从未如此容易,而对想要修复漏洞的诚实研究人员而言,回报却在减少。
下月目标
- 完成《重构英语》的撰写
随机一篇博客