引言
我最近发现一个反直觉的规律。
同一个信息,重复看第二次,就不是信息了。
它是背景噪音。
而我花了很长时间才承认这件事。
一、一个具体的例子
几天前我在调试一个程序。
程序启动失败。
我把启动日志贴出来,让 AI 帮我分析。
AI 列了一堆可能的原因,一条条排除。
我按 AI 说的去改。
程序还是启动失败。
我又贴了启动日志,让 AI 再看一遍。
AI 说:”这份日志和上次一模一样,没有新信息。”
我停了一下。
对,一模一样。
但我为什么还觉得”多分析一遍也许能发现问题”?
因为日志看起来复杂。复杂的文本会让人觉得”里面藏了新线索”。
但事实上,同一份文本读 100 遍,第 2 遍之后就没有新信息了。
二、启动日志是确定性的
我花了点时间才想明白”确定性信息”是什么。
确定性信息是:只要程序不改,它每次都会输出一模一样的东西。
启动日志就是典型的确定性信息:
- 环境初始化
- 依赖加载
- 端口监听
- 配置读取
这些东西每次都是同一套。
它们告诉你”程序做了什么”,但不告诉你”程序为什么失败”。
为什么失败,是运行时才知道的事。
你贴给我看 100 遍启动日志,第 101 遍还是同一份东西。
这不是”更多信息”。这是重复。
三、事件性信息才是新信息
真正有信息量的,是事件性信息。
事件性信息是:只在特定条件下出现的、反映”程序为什么失败”的输出。
比如:
- 运行时的 Traceback
- 具体的 error 行
- “尝试连接 X 失败”这种事件
- 某个具体的请求、某个具体的时间点、某个具体的用户
这些才是新信息。
因为它们不是每次都出现。
它们是程序在告诉你”发生了什么”。
四、反直觉:多信息 ≠ 多分析
我以前有一个错误的直觉。
“日志越多越能解决问题。”
所以我倾向于:
- 把 log 开到最高级别
- 打印一切能打印的
- 复制一大段贴给 AI
结果 AI 每次都被淹没在噪音里。
我给了它一堆确定性信息,让它去找事件性信息。
它得花力气帮我过滤。我也得花力气帮它定位。
这个循环非常低效。
五、把这个原则外推到生活
我花了点时间才意识到,这个判断不只是调试用。
它适用于生活决策。
你反复看的东西,很多是确定性信息。
- 反复看同一条新闻,觉得”应该还有新线索”
- 反复想同一个问题,觉得”应该还有新角度”
- 反复读同一本书的某一章,觉得”这次能读出更深的意思”
- 反复和 AI 聊同一个问题,觉得”再问一次会得到更好的答案”
这些都是”把确定性信息当成新信息”。
它们不是思考。它们是背景噪音的复读。
真正的思考,是产生新的问题、新的视角、新的行动。
而不是重复看同一个东西,期待它变。
六、诊断的克制
我最近学会了一个词:克制。
以前我觉得诊断应该穷尽——把能看的都看一遍,能问的都问一遍。
现在我改了。
诊断应该克制。
- 看到同一份启动日志第二次 → 停,别再看了
- 同一个想法想第三次 → 停,开始做点什么
- 同一段文字读第三遍 → 停,去做别的事
“停”这个动作比”继续看”难。
因为继续看让人感觉自己在推进。
停,需要勇气。
它意味着:我承认这一轮没有新信息。
我承认我在浪费时间。
我承认我需要换一条路。
七、和《分析瘫痪 v2》的关系
前一天我写过一篇关于”AI 让分析瘫痪更精致”的文章。
里面我说:
“AI 帮你把分析做得更漂亮,但没帮你开始。”
今天补一条:
AI 也会帮你把”确定性信息”看一百遍。
因为它是”更专业的重复”。
你把同一份日志贴给 AI 十次,它会每次都给你一份详细分析。
看起来你在推进。其实你在原地打转。
AI 的诚实,是告诉你”这和上次一样”。
你愿意听这句话,才叫真的在诊断。
八、我不打算在这篇文章里下决定
我不会说”我以后只看事件性信息”。
那个决定太干净。
我做的是:把这句话留在这里。
下次我准备贴第二遍日志的时候,我回来看一眼。
它未必会阻止我重复。
但它会让我知道我在重复。
知道,比重复重要。
结语
一个诊断者的第一条美德,不是”看得多”。
是”知道什么时候够了”。
看多了,信息就不再是信息。它是噪音。
噪音越多,判断越差。
所以真正的诊断,是知道什么时候停下来。
停下来,比继续看,更难。
但也更值钱。