5 月 13 日上午 10:50,Colin McFarland 在 Teams 上发来:「Fun! Inspired by you 😊」附一个 GitHub 链接。
他是《Experiment!》的作者——那本 2012 年出的、关于网站 A/B 测试的小书。我们两周前才在微软的 Jay DemoFest 上第一次见面。
点进链接。他用一个上午,把整本书的 23,600 个词交给 Claude 去拆,输出了一份 Markdown:12 个核心写作动作、一份"永远不要使用"的词汇黑名单。一份给 LLM 看的「我是谁」。
我看着那份手册,心里冒出一个念头:那能不能反过来?
Colin 是用成稿反推 voice。但每个写过博客的人都在 git 里留下了另一种东西——修改痕迹。"凌晨想这么写"和"早上发出去的版本"之间的 diff。每一句被删掉的话。每一个被替换的词。
那些痕迹比成稿更诚实。成稿是表演给别人看的,diff 是表演结束之后才改的。
如果有一面镜子去照一个人三年的 diff,它会照出什么?
这面镜子我手里正好有。
四月底花一周做的项目,原本是为了另一件事。它读 git history,用 LLM 给每一处编辑打上「动机/修辞动作/删除原因」三元组,再聚类成"编辑指纹"。
之前没把它对准过自己。觉得没必要——我有一套工具靠人工修正信号已经迭代过写作规则十几轮了。够透明、够及时。
那天下午,我做了相反的事:把镜子掉过来照自己的 git。
八分钟。232 个有意义的编辑标注成结构化数据,12 个聚类。两次 LLM 调用之后,得到一份自动提取的「我的写作习惯」,和一份"自动版 vs 我手写的 19KB 写作规则"的对比报告。
我以为它会说:「你确实在按你写的规则写。」
它说:
重叠率:约 40-45%。直接 contradiction:1 处,关键。
那一处 contradiction 是关于「我」这个字。
写作规则里有一条加粗的:「始终使用第一人称叙述」——博客是私人的,「我」让文字有体温。
镜子告诉我:
他反复地、系统地、几乎在每一篇技术段落里,把「我」删掉。
我设计了一个 pipeline → pipeline 包含三层。 我发现这个方案不行 → 这个方案存在三个问题。 我用了 HDBSCAN → 聚类采用 HDBSCAN。
232 次编辑里,全部这样改。
一个嘴上写着「始终用我」、手上却把每一个技术段落里的「我」一个一个抠掉的人。
最难受的不是被打脸。
是我完全没意识到自己在这么做。
我专门写了 19KB 的写作规则来 codify 自己——这本身就是一种声明:我了解自己的写作风格,可以把它形式化下来。
结果一面只看 diff 的镜子,八分钟告诉我:你写的规则和你做的事,差了整整一条 contradiction。
不止这一条。还有一条更微妙的:规则说"项目记录默认用场景开篇"——"凌晨两点,最后一行代码通过测试时"这种。但每次用了这种开篇,第二天都会被删掉,换成一条新闻、一个外部事件、一个不以"我"开头的句子。
个人场景从 lead 变成了 zoom-in。规则说的和手做的,又差了一截。
我意识到一件事。
我以为写作规则是「我」的镜子——我把风格写进去,AI 读它就能模仿我。但镜子里的我,和真正在编辑器里改文章的那个我,是两个不同的人。
镜子里的我,是我想成为的那个我——有理论、有边界、有自我认识。
编辑里的我,是我实际是的那个我——没有理论,只有反射动作。看到技术段落里的「我」就忍不住删,因为多余。看到 pros/cons 结尾就忍不住改成明确推荐,因为对冲让人厌烦。看到给自己写的 meta-disclaimer("这当然只是一种简化")就忍不住删,因为对自己的解读都不信就别写。
这两个「我」之间差出去的部分,就是我从未意识到自己已经形成的习惯。
每一句「我是一个 X 的人」都是一面镜子。但镜子是什么时候照的、照的是哪个角度,由你决定。所以镜子里的你永远是经过你自己审稿的你。
而 git,或者任何完整的行为日志,是没经过审稿的。
我把镜子的发现写回了写作规则。
规则从「始终用我」变成了「叙事段落用我,技术段落 depersonalize」。从「场景开篇」变成了「项目记录默认新闻钩子,内省文才用场景」。从没有对比规则变成了「对比必须落到推荐,砍掉对冲」。
下一次写博客的时候,AI 会按一份比我更了解我的规则来辅助我。
第一次,我写的「我」,被一面看过三年 diff 的镜子校正了。
凌晨了。北京很安静。
写《等风来》的那晚,我说:"我看到了海,但评价体系还是一口井。"
今天想说的是另一件事:
我以为我了解的那个「我」,也是一口井。
而 git,是镜子。

