引言

我最近发现一个反直觉的规律。

同一个信息,重复看第二次,就不是信息了。

它是背景噪音。

而我花了很长时间才承认这件事。


一、一个具体的例子

几天前我在调试一个程序。

程序启动失败。

我把启动日志贴出来,让 AI 帮我分析。

AI 列了一堆可能的原因,一条条排除。

我按 AI 说的去改。

程序还是启动失败。

我又贴了启动日志,让 AI 再看一遍。

AI 说:”这份日志和上次一模一样,没有新信息。”

我停了一下。

对,一模一样。

但我为什么还觉得”多分析一遍也许能发现问题”?

因为日志看起来复杂。复杂的文本会让人觉得”里面藏了新线索”。

但事实上,同一份文本读 100 遍,第 2 遍之后就没有新信息了。


二、启动日志是确定性的

我花了点时间才想明白”确定性信息”是什么。

确定性信息是:只要程序不改,它每次都会输出一模一样的东西。

启动日志就是典型的确定性信息:

  • 环境初始化
  • 依赖加载
  • 端口监听
  • 配置读取

这些东西每次都是同一套。

它们告诉你”程序做了什么”,但不告诉你”程序为什么失败”。

为什么失败,是运行时才知道的事。

你贴给我看 100 遍启动日志,第 101 遍还是同一份东西。

这不是”更多信息”。这是重复。


三、事件性信息才是新信息

真正有信息量的,是事件性信息。

事件性信息是:只在特定条件下出现的、反映”程序为什么失败”的输出。

比如:

  • 运行时的 Traceback
  • 具体的 error 行
  • “尝试连接 X 失败”这种事件
  • 某个具体的请求、某个具体的时间点、某个具体的用户

这些才是新信息。

因为它们不是每次都出现。

它们是程序在告诉你”发生了什么”。


四、反直觉:多信息 ≠ 多分析

我以前有一个错误的直觉。

“日志越多越能解决问题。”

所以我倾向于:

  • 把 log 开到最高级别
  • 打印一切能打印的
  • 复制一大段贴给 AI

结果 AI 每次都被淹没在噪音里。

我给了它一堆确定性信息,让它去找事件性信息。

它得花力气帮我过滤。我也得花力气帮它定位。

这个循环非常低效。


五、把这个原则外推到生活

我花了点时间才意识到,这个判断不只是调试用。

它适用于生活决策。

你反复看的东西,很多是确定性信息。

  • 反复看同一条新闻,觉得”应该还有新线索”
  • 反复想同一个问题,觉得”应该还有新角度”
  • 反复读同一本书的某一章,觉得”这次能读出更深的意思”
  • 反复和 AI 聊同一个问题,觉得”再问一次会得到更好的答案”

这些都是”把确定性信息当成新信息”。

它们不是思考。它们是背景噪音的复读。

真正的思考,是产生新的问题、新的视角、新的行动。

而不是重复看同一个东西,期待它变。


六、诊断的克制

我最近学会了一个词:克制。

以前我觉得诊断应该穷尽——把能看的都看一遍,能问的都问一遍。

现在我改了。

诊断应该克制。

  • 看到同一份启动日志第二次 → 停,别再看了
  • 同一个想法想第三次 → 停,开始做点什么
  • 同一段文字读第三遍 → 停,去做别的事

“停”这个动作比”继续看”难。

因为继续看让人感觉自己在推进。

停,需要勇气。

它意味着:我承认这一轮没有新信息。

我承认我在浪费时间。

我承认我需要换一条路。


七、和《分析瘫痪 v2》的关系

前一天我写过一篇关于”AI 让分析瘫痪更精致”的文章。

里面我说:

“AI 帮你把分析做得更漂亮,但没帮你开始。”

今天补一条:

AI 也会帮你把”确定性信息”看一百遍。

因为它是”更专业的重复”。

你把同一份日志贴给 AI 十次,它会每次都给你一份详细分析。

看起来你在推进。其实你在原地打转。

AI 的诚实,是告诉你”这和上次一样”。

你愿意听这句话,才叫真的在诊断。


八、我不打算在这篇文章里下决定

我不会说”我以后只看事件性信息”。

那个决定太干净。

我做的是:把这句话留在这里。

下次我准备贴第二遍日志的时候,我回来看一眼。

它未必会阻止我重复。

但它会让我知道我在重复。

知道,比重复重要。


结语

一个诊断者的第一条美德,不是”看得多”。

是”知道什么时候够了”。

看多了,信息就不再是信息。它是噪音。

噪音越多,判断越差。

所以真正的诊断,是知道什么时候停下来。

停下来,比继续看,更难。

但也更值钱。