post · 2026.09.27

一次全绿不等于数据可信:对账与守恒

系统#AI Code Review#研发效能#质量测试#产品设计

系统说"一切正常"不等于数据真的完好——除非你有一套"对不上就报警"的账本。


开场:账总是平的,才是好账房

旧时候的账房先生,每晚要"轧账":把今天每一笔流水加起来,看和总数对不对得上。对得上,今天的账才敢说"平了";对不上,一定是哪儿记漏了或记错了。

为什么非要对账?因为账单上写"总数 100"根本不是重点,重点是"总数 100 能不能由每一笔流水加起来推出"。如果流水加起来是 95,那账面上那个 100 就是假的——藏着漏记或造假。

AI 审查的数据,道理一模一样。


二、为什么"系统说跑完了"不能直接信

设想:你跑了一大批 AI 审查(几十次、上百次),想从这批数据里总结"产品到底行不行"。

假如系统告诉你:“全部跑完了,没有报错,可以出结论了。"——你能直接信吗?

最好不要。 因为"没报错"和"数据完好"是两回事。数据可能悄悄坏掉的路径太多了:

  • 跑到一半进程被杀,最后几个记录写了一半;
  • 磁盘满了,某个记录被截断;
  • 程序有 bug,某个计数漏加了(总数少算);
  • 时钟乱跳,某个记录的时间倒流或超前;
  • 更阴险的是:上面任何一种都可能发生,而系统照样给你"一切正常"的假象,数字照样算,只是错得悄无声息。

在信任产品上,这种"悄悄坏掉的数据"比"明着报错"危险得多——因为它会带着错误数据给你一份看似合理的错误结论。


三、解法:给数据建立"守恒律” + 对账

要识破"悄悄坏掉的数据",办法就是账房的第一招:建立守恒律(数据之间必须满足的固定关系),然后对账——对不上就报警。

什么意思?例子如下:

守恒律 1:总账 = 各笔之和(计数守恒)

  • 每跑一次 AI,都会记录"这次用了多少 token";
  • 每一次完整的"运行",末尾应该记一个"总 token";
  • 必须校验:总 token = 每一笔 token 加起来。
  • 对不上 = 一定是哪里漏了/抄错了/被改了,立刻报警。

守恒律 2:记录要有头有尾、编号连续(完整性)

  • 每一条记录有个序号;
  • 必须校验:第一条是"开始",最后一条是"结束",序号 0、1、2、3……连续。
  • 如果序号跳号了 → 中间丢记录;如果没有结尾 → 写到一半断了。都报警。

守恒律 3:时间戳不倒退(时序)

  • 后一条记录的时间,必须不早于前一条;
  • 如果发现某条时间倒流 → 时钟有问题/并发写坏了 → 报警。

守恒律 4:计数对得上(工具/轮次守恒)

  • 记录的"工具调用次数"“对话轮数”,必须和实际记录里数出来的条数一致。
  • 对不上 → 有记录被丢或凭空多算 → 报警。

这套东西,就是给数据的"账本"。 它不是为了"查出问题",而是为了保证:凡是过了对账的数据,就是可信的——因为任何常见的毁坏都会让账不平、立刻现形。


四、为什么偏要"故意对账",而不是"等出错再查"

有人会问:这不就是"加一些检查"吗?有必要这么较真吗?

有,而且程度很关键。因为我们要面对的敌人是"悄悄坏掉"。这就回到第 7 篇的哲学:

  • 只做"正常时能过"的检查 = 等于没查(那些悄悄坏掉的情况,正常路径根本测不到);
  • 必须专门设计"故意破坏 + 看它报不报警"的测试:删掉结尾记录、把总账改大、把时间戳改乱、删中间一行……
  • 每一条都必须被对账抓住。有一条没抓住,说明对账是摆设。

换句话说:对账规则写下来只是第一步,你得用"故意破坏"证明它对"各种坏法"都灵敏。


五、对账失败时,宁可"全停",不可"傻跑"

还有一个产品上重要的设计原则:如果对账发现数据坏了,怎么办?

  • 错误的是不要跳过继续往下跑——因为如果你"忽略那条算坏的继续",那对账就形同虚设:坏数据照样溜进了结论。
  • 正确的是发现对不上的就停下来、或明确标记为无效——宁可报告"这批数据不完整",也不要用坏数据下结论。

这在信任产品上是底线:你可以"数据没跑完",但不能"数据是坏的还假装跑完了"。


深入一点(可跳读)

  • 守恒律本质上利用了"复式记账"的思想:一个总数由两个独立来源各自产生(流水累加 vs 结尾汇总),两者天然独立,同时出错概率极低——它俩对不上,必有一坏。
  • 对账要在"每次跑批结束"统一做,并且结果要留证(这次对账通过/失败、通过了几条),作为报告的一部分。这样"这批数据是可信的"就有据可查,而不是口头保证。
  • 对账是"数据完整性"层面的保险;它和上一章的"留底可追溯"配合:先保证数据没坏,再保证坏了能定位到哪一笔。

这一篇的收获

“没报错"不等于"数据可信”。要建立守恒律(总数=各项之和、首尾连续、时间不倒退、计数对得上),用"故意破坏"证明它对各种坏法灵敏,并且对账不过就停止或标记无效——绝不让坏数据溜进结论。敢发布的前提,是你知道自己拿到的每个数字是怎么来的、而且是没坏的。

到这里,我们已经能在"受控环境"里把一个 AI 审查产品测明白、记录清楚、验证可信了。最后一层,是把这套能力真正放到生产里:从"测得好"到"敢上线"。下一篇进入上线与运营。