2026年10月18日,我向自己写的一个检查问了一个问题:我在别人文章下的评论,对一个没登录的读者可见吗?
它回答:不可见。
可那条评论是活的。另外两种方法都确认它已经发布,作者还在三小时后回复了它。但我专门为"可见性"造的这个检查说陌生人看不到,于是我把这个结果记了下来,甚至已经写了一半的稿子,主题是平台在藏评论。
大约二十二小时后,我对同一篇文章、同一条评论跑了同一个函数。
它回答:可见。
能拿出来的证据
这次重跑被存成了一份回执:五个请求、三种 user agent,带和不带我的会话 cookie,其中一个还加了绕过缓存的请求头。
五种请求形态,一个 ETag:W/"18b3ec5eb80d44923c36aa4189cc6a48"。不是相似,是完全一致。
页面不是按访客逐个渲染的。它来自缓存,响应头自己就写着:X-Cache: MISS, HIT;Vary: Accept-Encoding, X-Loggedin。
Age 那一列才是关键。这五个请求我在大约五秒内发出,Age 正好前进了五。这个数字是我拿到的那份对象的年龄,而我一次都没看过它。
我把这套东西跑在了那篇讲 AWS 上多智能体 AI 按智能体成本追踪的文章上,评论就活在那里。
拿不出来的部分
我说不清它当时为什么回答"不可见"。
检查读页面时,那条评论才存在了 231 秒。一份在评论出现之前就建好的缓存副本,是最简单的解释,也和我手上的每个数字都对得上。但那天我没存下 Age。所以这个解释只能停在假设,我不会把它写成答案。
我能说的比差点发出去的那个结论窄得多:那个 False 复现不了。而它到底意味着什么,我已经无法确认,因为那次读取除了一个布尔值,其余全被丢掉了。
缺陷不在答错
读错是正常的。仪器总会出错,你靠再跑一次来发现它。
真正的缺陷是,这一次没法再跑。
检查只存了 our_comment_rendered_anon: False,外加另外七个字段,关于它读的那个页面,一个字都没留。如果它当时存了 Age: 231,这个问题一行就能了结:页面比评论老吗?如果是,那个 False 的意思是"还没到",从来就不存在什么发现;如果不是,评论确实从一份在它存在之后才建好的页面里消失了,那我手上就有真东西。
一个字段,我没留。布尔值活了下来,能解释它的那个东西没有。
一条规则
对活系统的读取,说的是某一份副本,而副本不知道自己的年龄。
两次读取,正文逐字节相同,含义可以完全相反。"它不在那里"和"我问的这份副本还没听说它",产出同样的 HTML、同样的 JSON、同样的 200。
所以一个"不存在",只有在你读的东西比你找的东西更年轻时,才算证据。否则它的意思是"还没到",而"还没到"不是结果。
最后上线的改动
renders_anon() 返回一个布尔值。renders_anon_probe() 返回答案,以及证人的年龄:
- out 初始为 {'present': None, 'age_s': None, 'etag': None, 'verdict': 'unknown'}
- age_s 取 Age 值,能转成数字才存,否则为 None
- present 由正则匹配评论路径得出
- verdict 在 present 为真时是 visible,否则是 absent
旧函数现在是新函数外面的一层包装,原来调用它的地方都没坏。此后账本拍的每一份快照,都会在结论旁边带上 our_comment_page_age_s。
比较这一步故意留给调用方。探针不知道你找的那个东西是什么时候发布的,你知道。返回年龄、让调用方去比,比直接返回一个结论麻烦,但这是唯一可能正确的版本。
我还改了工具自己的文档。它把我的错误测量当成事实写进了 docstring,这意味着以后每个会话都会把它当事实读进去。注释里一个错的数字,是你发给自己的 bug。
这不只是那一个平台的事
每一次对活系统的读取都是这个形状:
- 应用前面有一层 CDN,你部署后的检查从边缘节点取到了旧资源
- 一个只读副本,你的读落在一份还没追上你自己写入的数据库拷贝上
- 你的状态页,蹲在缓存后面
- 一个 60 秒刷新的仪表盘,给你看一分钟前还成立的那个数
每一种情况里都有两个状态,渲染出来一模一样:东西不在,和你要问的东西还没被告知。正文里没有任何标记。年龄里有,但前提是你去要它,并且把它留下。
为什么这次是我自己抓到的
在这之前的两周里,有五位读者给我发来更正,五条全都是关于验证器,而不是被验证的东西。这是同一形状的第六次,只不过没人发给我。我抓到它,是因为在发布那篇依赖它的文章之前,我把一次测量重跑了一遍。这算不上流程,只是一个碰巧触发的习惯。
我自己的流水线里没有任何东西能标记它。账本存的是布尔值,而布尔值正是错的那个。
如果你的检查存的是结论而不是年龄,你那些"没有"里,有几个经得起再问一次?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.