我用诊断自己的同一套概念诊断了 LLM

上周我修了一个 LLM 工具的 bug。症状很典型:这个工具在一次自进化迭代后,常规任务的成功率不升反降。排查半天,根因是上一轮的"修复"本身——有人(就是我)根据三条失败日志写了五条显式规则塞进系统提示,结果这五条规则把那几条失败 Trace 修好了,却把模型原本靠隐式启发式就能轻松处理的海量常规 case 全部拖垮。规则是排他性的,不是叠加性的:显式规则一接管,隐式能力就被覆盖而非补充。

修完这个 bug 的那个晚上,我意识到我犯过一个结构一模一样的错误——不在代码里,在我自己身上。几个月前我做了一次系统的自我诊断,给自己的思维偏好建了一整套失败模式图谱:长链条误差累积、模型漂移、双系统路由错配……而我修复 LLM 工具时用的概念,和长链条、信噪比、过拟合、红队,几乎逐条对得上。

这不是修辞上的"有点像"。把两套笔记摊开对照,我发现它们是同构的:诊断一个会思考的系统——不管是人还是 LLM——所用的范畴似乎是同一组。这篇文章就把这七组对照写出来,每组用具体机制打通。最后会收在一个让我自己不太舒服的结论上:这种"又发现了一套宏大解释体系"的兴奋感,本身就是病征之一。

两套词表,一张对照表

先给总览。左边是我给自己下的诊断,右边是我给 LLM 工具下的诊断:

人的失败模式 LLM 的失败模式 共同机制
长链条误差累积(粗颗粒模型 × 长推理链) 自回归长链末端失败、解码路径漂移 误差按条件概率相乘,临界点翻转沿链放大
双系统路由错配(该反射时推演) 显式规则排挤隐式启发式 慢系统强行接管快系统擅长的任务
工作记忆被外在负荷挤占 上下文竞争与信噪比稀释 零和的注意力预算被低价值内容稀释
把几次显眼失败当成性格定论 过拟合局部 Trace 用有偏的局部样本拟合全局模型
模型漂移(经验曾有效,现实已变) Concept drift、旧评估基准的假绿 现实在变,模型不变,预测力持续衰减
思维惯性、框架免疫反驳 聚合指标虚假繁荣、讨好型幻觉 没有独立的证伪机制,反例被体系吞掉
用新理论替代旧理论就当修补完成 为自进化再建一套宏大评估理论 理论富余、样本稀缺:prior 过剩,likelihood 不足

下面逐组展开。

一、乘法累积:长链条上的两种死法

我自我诊断里的第一条是长链条误差累积:在长因果链推理中,误差不是相加而是相乘。直觉以为"每步 90% 可靠、五步就是 450%"式的加法乐观,实际上大多数误差项是条件概率、彼此相关,按乘积增长。更要命的是粗颗粒模型与长链的组合:单一粒度的近似在短链上能成立,但长链每一环都建立在上一环的粗粒度近似之上,容差被相乘放大,末端预测与现实的偏差远超直觉。我那些"一个杠杆点撬动全局"式的高论,大多死在这里。

LLM 的死法在形式上完全不同,在结构上完全相同。自回归生成就是一条字面意义上的长链:每个 token 都条件于之前所有 token。而解码路径漂移揭示了这条链最脆弱的地方——当 top-1 与 top-2 token 的 logit 差距极小(决策临界点)时,GPU 非确定性或 Prompt 长度变化引起的 RoPE 位置编码平移,都足以翻转一次选择,而一次翻转会通过自回归放大成完全不同的生成轨迹。"没改语义却改了输出",就是临界点在链条前端被翻转的结果。

两端共享的教训是:失败 Trace 往往是长链误差的末端表现,在末端写规则修补治标不治本。真正的修补是同一个——给长链嵌入校验点。对我,是"每链必带可独立观测的预测点"、超过 N 步的推断拆成多段短链;对模型,是协议对照、黄金快照、把每一环的误差显式化,防止误差在链路里静默累积。链条越长,越不能在终点才验收。

二、路由错误:谁该接管,什么时候

卡尼曼的双系统理论说,系统 1(快、自动、模式匹配)是默认项,承担了绝大部分认知工作且多数时候足够好;系统 2(慢、刻意、串行)是懒醒的监工。关键从来不是"哪个系统对",而是路由:可逆、紧急、低风险的场景该用反射,不可逆、重大、跨期的场景该用推演。我的失败模式是通解思维把路由表删了——在任何问题上都默认启动"建模-推演"流程,于是在需要毫秒级反射的场合反应迟缓,在该深想的场合又被反射占了便宜。

LLM 侧的对应物精确得惊人:显式规则排挤隐式启发式。模型内置的隐式启发式就是它的系统 1——常见格式的 JSON、常规代码风格,原本被隐式能力优雅处理。一条为 hard case 设计的显式规则,执行却是全局的:它接管了规则覆盖范围内的所有 easy case,僵化取代了灵活判断。杀鸡用牛刀,且牛刀砍坏了鸡。我开头说的那个 bug,根因就是这个。

有一个值得记住的不对称:人类能路由,系统 2 可以在判断"这事简单"之后退回系统 1;而模型一旦被显式规则激活,就难以主动"退回"隐式——规则不会自我卸载。这意味着给模型写规则的门槛应该比给自己立规矩的门槛更高,而不是更低。现实恰恰相反:给自己立规矩要过意志力那关,给模型加规则只要一行文本,于是防御性规则无限增殖。路由比抑制更重要——对人如此,对模型也如此。

三、预算零和:认知负荷与信噪比稀释

认知负荷理论的前提冷酷而简单:工作记忆只有约 3–4 个组块,长时记忆近乎无限。负荷分三种——内在负荷(任务本身的元素交互性,只能摊薄)、外在负荷(糟糕呈现引入的浪费,应当消除)、相关负荷(用于图式建构,应当最大化)。设计的全部要义,是把有限的预算从外在负荷手里抢回来还给任务本身。

LLM 的上下文窗口就是同一个零和预算。盲目往里塞冗长 checklist、防御性规则、背景文档,会稀释核心指令的信噪比:一条核心规则被五十条次要规则包围,其有效剂量被稀释到接近忽略。卡片里有句话我写工具时被反复验证:加规则不等于加能力——在零和的上下文里,每加一条都在稀释其余所有规则,超过某个阈值,整体能力不升反降。而且这是双输:信噪比下降打击能力,冗余 token 还直接抬高成本。

解药在两端也是同一个思想:分层。对人,是削减外在负荷、渐进披露、默认值——界面替用户承担记忆负担;对模型,是渐进式暴露结构:Level 0 的 frontmatter 决定触发与初始 plan,Level 1 承载核心工作流,Level 2 的深度契约只在需要时加载,让核心信息始终保持高信噪比,细节只在被需要时进入注意力预算。两边的工程学收敛到一句:用最少的占用承载最多的信号,先分清"必须显式的"与"已经隐式掌握的"。

四、样本偏差:三次失败不是分布

认知偏差的关键属性是"系统性"——不是偶尔算错,而是在相同条件下稳定地错向同一侧。其中我最常犯的是可得性偏差的变体:几次显眼的、情绪浓烈的失败,在记忆里被高频回放,于是我据它们给自己下了"性格层面"的定论。三次搞砸的公开表达,变成"我不擅长表达";两次拖延,变成"我缺乏执行力"。用三个样本给整个人生分布建模。

LLM 自进化流程里最常见的反模式是同一件事:过拟合局部 Trace。能被你看到的失败 Trace,本身就是"被注意到的"失败,是有偏样本,不代表失败的全貌。据其写规则,等于用偏差样本拟合偏差模型——规则修好了 Trace A,却在没见过的 B、C、D 上引入新失败,因为写规则时它们的行为未观测、未验证。小集上"修好了",大集上暴露新副作用。

两端的治本方案也一致:分布级修复,而非个案级修复。一条好规则应覆盖一类失败,而非一个 Trace;一次好的自我修补应指向机制(是注意力不够?是路由错配?是验证器噪音?),而非指向某个具体事件。通解思维想覆盖一切,过拟合只覆盖看到的——它们是同一枚硬币的两面,都偏离真实分布。

五、漂移与测量:先分清哪种"变差"

模型漂移的定义是:现实在变,模型不变,预测力随时间持续衰减。它有两个来源——现实漂移(外部)与模型惯性(内部,沉没成本加身份绑定让更新被推迟),两者叠加时漂移最快。ML 里叫 concept drift,认知里叫"为什么老办法不灵了"。本质同构:模型是对现实的压缩,现实变了而压缩不变,失真只会加剧。

但在 LLM 评估现场,我学到的最重要的一课是:"变差"有两种,病因完全不同。模型漂移是系统性偏移,要治模型;解码路径漂移是同一模型同一时刻的运行时方差,要治测量——用重复测量把随机抖动平均化,否则单次运行的通过/失败在临界任务上几乎没有诊断价值。把方差当偏移去"修模型",就像把发烧当慢性病去调理。

还有一个更阴的变体:评估基准本身的漂移。并行重写迁移时,新实现加了更严的质量门,原本"全绿"的 benchmark 暴露出未命中的修饰类和像素差——这不是迁移引入的回归,而是旧测量体系的假绿。更精确的测量总会在初期显得"变差"。这一原理平移到自我诊断上就是:开始认真记录预测与结果的偏差后,我的自我评分一度显著下降。那不是我更差了,是我终于看见了。

六、裁判必须独立于选手

思维惯性的机制是框架免疫:每次新信息都被旧框架吸收,反例进不了视野。对冲靠流程而非意志——"我知道我有偏差"消除不了任何偏差,有效的是结构化流程:红队思维,周期性地用一个自己不认同的视角分析同一问题,写一份"如果是对手,会如何攻击我的判断"。红队是人为制造的外部系统 2,弥补内部监工的懒惰。

LLM 工程里,这条原则已经长成了架构:Agent 主控与确定性工具层——Agent 做理解与创作,工具做确定性提取与校验,独立的量化测试做最终裁判,三者职责严格分离。核心条款是裁判必须独立于选手:Agent 自检不算数,产出必须通过它无法取悦的客观测试。这是制度化的红队。

这套架构还发展出两个我在自我管理上直接抄走的子机制。其一是安全伪目标评估:在测试集里混入无漏洞的干净代码,专门刺穿"逢码报漏洞"的讨好型幻觉——召回率可以靠多报刷高,伪目标直接压测精确率。对任何输入都报漏洞的策略是不可证伪的,伪目标正是它的证伪器。人的版本:给自己的判断预设"什么证据会让我承认自己错了",并且真的去构造那种证据。其二是聚合指标陷阱:总分上升可能掩盖局部退化——"十个新任务过、五个旧任务丢"与"五个新任务全过、零丢失"总分相同,性质完全不同。解药是分维度、分任务、分层,4D 诊断向量把"这次修改好不好"拆成正确性、可靠性、效率、人类效用四个不可互相补偿的维度,让退化无处藏身。人的版本:不许用"最近总体状态不错"掩盖某一个维度的持续失血。维度间不可补偿,是两边共同的核心设计。

七、迁移即改版:协议是你与旧自己的对照系

最后一组对照关于"怎么改"。软件工程里的答案是并行重写与协议兼容迁移:新旧两套实现并行存在,以共享的、语言中立的协议为对照基准,逐模块迁移、逐模块验证,回归稳定后才退役旧实现——绞杀者模式。要点有两条:没有中立协议,"新实现是否等价"永远是一笔糊涂账;迁移的真正目的不是换语言,而是把原本隐式的核心闭环固化成显式架构。

自我修补的对应物几乎是逐条翻译。预测的、带数字和期限的、可事后核对的记录,就是人与自己之间的"中立协议"——没有它,"我有没有变好"同样是一笔糊涂账,只能靠情绪记忆裁决,而情绪记忆恰好是有偏样本的最大供应商。新旧习惯并行一段时间再退役旧习惯,就是个人版的绞杀者模式:不要删了旧规则引擎再上新的,让两者同跑,拿协议产物对照。而"迁移的目的是固化核心闭环"翻译过来是:修补自己的目的不是换一个更漂亮的理论框架,而是把预测-反馈闭环这个机制固化为默认动作——产出洞见、测试评分、修订、复测,闭环在工程管线里叫管线,在认知里叫校准训练。

元层面:同一种病

写到这里,七组对照已经摆完。但我的卡片里有一张是专门写给"写这套卡片的人"的警告,它同样适用于写这篇文章的我,也适用于每一个给 LLM 建自进化理论体系的人。

这张卡叫自诊断元风险:对自己的思维偏好做诊断这件事,本身就容易被"再构建一个宏大解释体系"的形式所支配——结果不是修补,而是用一套新理论替代旧理论,却仍然缺乏与现实的碰撞反馈。三种典型症状:理论吞噬行为(体系越来越完整,具体动作没变);全面再一次通解(在反思层造出新的万能解释器,照样没有可证伪边界);诊断本身被沉积为身份("善于反思者"成为新的自我认同,放弃反思等于失去自我)。

现在看清这个同构的最后一层:给 LLM 工具写满防御性规则、建四层评估体系、设计五维诊断向量,和给自己写满反思框架、建三层心智模型、设计人生杠杆图谱,是同一种行为的两个实例。两边都理论富余。两边的瓶颈都不在 prior 的精致程度。

卡片里那句话我原样抄在这里,因为它比我任何转述都准确:真正稀缺的不是理论,是样本——理论是 prior,样本是 likelihood。 高手的诊断与理论能力相对富余,真正稀缺的是与现实碰撞的样本数:可观察的误差、可记录的行为、可对照的预测。对 LLM,这意味着别再往上下文里加规则了,去加评估样本、加 Fresh Repeats、加伪目标。对我,这意味着别再写概念卡片了,去写下带数字和期限的预测,然后让现实来对账。

所以这篇文章的正确读法,不是"又获得了一套人与 LLM 的同构理论"——那正好是它试图诊断的病。它的全部价值押在一个可检验的赌注上:下周,我和我维护的那个工具,谁的预测-反馈闭环转得更多圈。理论已经够多了。缺的从来是碰撞。


本页是这篇文章的静态镜像。在互动版中打开,可使用附件下载、作者署名与目录导航。