☰
《执行缝隙》作者手记 07|变化发生了,为什么还不能说找到了原因
2026/10/8 14:27:52 网站建设 项目流程

本文是《执行缝隙》(The Execution Gap)的作者手记。 它不是书籍正文的摘要或重写,而是围绕本章问题、工程背景与写作之后的进一步思考。

事故发生以后,我们最容易找到的东西,往往是“哪里变了”。

某个参数和昨天不一样,一份配置刚刚发布过,一个策略最近被修改,一项状态在执行之前发生了变化,或者某个原本稳定的输入第一次出现了新的取值。只要系统拥有比较完整的日志和版本记录,这些变化通常并不难被定位,甚至还能准确地还原到修改时间、操作者和变更内容。

也正因为如此,“什么变了”很容易获得一种超出它本身能力的解释地位。

我们找到了一次变化,于是开始自然地说:“问题就是从这里开始的。”如果变化和事故时间又非常接近,这种判断会更加令人信服。一次发布之后系统出错,一项参数调整之后资金流向异常,一条策略更新之后执行行为发生变化,从叙事上看,它们几乎天然组成了一条完整的因果链。

但写到第七章时,我越来越觉得,这其实是一条必须非常小心的捷径。

因为变化很容易被发现,并不意味着变化本身已经解释了为什么偏差最终能够进入现实。

最容易找到的东西,不一定是最能解释问题的东西

第六章留下了三个问题:什么变了,哪个关系断了,以及断裂最终落在哪一个机制位置上。

这三个问题里,“什么变了”无疑是最容易开始的。

它面对的是对象自身的前后差异。一个参数原来是多少,现在是多少;一条策略原来的版本是什么,现在换成了什么;一个状态在某个时点以前和以后分别是什么。只要记录足够完整,很多时候我们甚至不需要理解整个系统,就可以先把变化找出来。

这种能力非常有价值。

真正的问题是,我们很容易在找到变化以后停止继续追问。

例如,一个已经获得批准的动作后来修改了参数。如果分析停在“参数发生了变化”,我们确实找到了一个真实事实,可这还没有告诉我们执行缝隙是否存在。真正需要继续检查的是:这次修改是否仍然处在原有授权范围之内,新的参数是否重新获得了当前资格,原来已经成立的批准与现在真正执行的对象之间是否仍然保持对应。

如果这些关系仍然成立,那么参数虽然改变了,却没有因为“改变”本身产生执行缝隙。

反过来,如果参数只发生了一个很小的变化,却使原来成立的授权、对象或者范围不再能够覆盖当前动作,那么真正需要解释的也不是“参数改了”,而是变化以后那组原本必须成立的关系没有继续成立。

这两种情况在日志里看起来可能很相似。

都有一个旧值,都有一个新值,也都能找到变更记录。

但它们在执行意义上完全不同。

所以“什么变了”更像一个入口,而不是一个结论。它帮助我们把视线落到一个具体对象上,然后真正的分析才开始。

十七个案例全部存在变化,仍然不够

当前已经完成事实核验的十七个案例中,Change 这一维全部被判为 Strong。

十七个案例,十七个都能找到明确变化。

这是一个很容易让人兴奋的结果,因为从表面上看,它似乎已经非常接近一种稳定规律。如果所有已经确认的执行缝隙案例里都存在变化,那么变化会不会就是 Execution Gap 的共同成因,至少也是一个必要条件?

第七章最后没有接受这个推论。

原因不是十七个样本太少这么简单,而是这组数据本身只看到了问题的一侧。

这十七个案例原本就是从已经成立的执行缝隙中取得的。我们实际测量的是:在已经发生执行缝隙的案例里,“什么变了”这个问题能不能找到东西。

答案是百分之百。

但这里还缺少另一半:那些每天都在正常运行、不断发生变更,却没有出现执行缝隙的系统怎么样?

软件发布会改变版本,账户余额会变化,库存每天都在变化,策略会修订,参数会调整,业务目标甚至会因为现实环境变化而被正式修改。如果这些变化都可以在相关资格和关系被重新建立之后正常进入执行,那么“变化存在”显然无法单独区分正常运行与执行偏差。

所以 17/17 真正告诉我的,不是 Change 已经获得了因果地位,而是另一个更加有限、也更加有用的结论:

“什么变了”是一个覆盖率非常高的分析入口。

这是它真正应该承担的位置。

覆盖得广,说明值得问;能够快速找到对象,说明适合放在分析前面。但它仍然没有替我们回答,为什么这个变化最终让已经成立的意图、授权、状态或者结果之间失去了原来的对应。

正常系统本来就应该允许变化

这一章里,我觉得最重要的反向检查,是承认一种很普通的现实:变化并不是异常状态。

如果一个系统必须靠“什么都不改变”才能保证安全,它本身就很难成为一个真正能够运行的系统。

业务意图会被合法修订。

一个企业今天决定执行某个目标,明天完全可能因为新的事实重新批准另一个目标。只要新的意图经过有效修订,后续动作也重新绑定新的意图,这种变化本身没有任何异常。

状态更是如此。

库存从一百变成九十九,余额因为正常支付发生变化,任务从执行中进入完成状态,设备从待机进入运行,这些变化不是系统的副作用,而正是系统存在的意义。要求状态保持不变,反而等于要求系统不要执行任何事情。

参数调整也一样。

一个拥有相应权限的主体,可以在其被授权范围内改变阈值、金额、时间、数量或其他执行参数。只要新的参数仍然处于已经建立的授权和边界之中,我们没有理由仅仅因为它和上一次不同,就把它视为执行缝隙。

真正需要警惕的是另一种情况:变化已经发生,但系统仍然继续使用变化之前的资格和关系,好像现实什么都没有变。

意图已经被合法修改,后续动作却仍然引用旧意图;现实状态已经发生变化,系统仍然按照旧状态判断;参数已经超过原授权范围,但那份旧授权仍然被当作当前执行资格。

到了这里,问题终于从 Change 进入了 Execution Gap。

而进入的原因不是“有东西变了”,而是变化以后,原来必须重新成立的对应关系没有重新建立。

我越来越关心的不是“有没有变”,而是“变了以后还算不算数”

这也是第七章里“当前资格”这个概念对我真正重要的地方。

一个判断过去成立,不意味着它永远成立。

一个授权昨天有效,不意味着今天面对不同状态、不同参数和不同对象仍然自动有效。真正接近执行的时候,需要知道的是它在当前现实条件下是否仍然具有资格。

这里很容易走向另一个极端:既然变化以后需要重新判断,那是不是应该建立一套完整的重新审批流程,定义谁来检查、什么时候检查、检查哪些字段?

第七章没有往这里走。

因为这一章处理的仍然只是理论位置,而不是工程实现。

它只保留一条很克制的边界:如果变化以后相关资格已经被重新建立,原本需要保持的对应关系也重新成立,那么变化本身就不能被当作执行缝隙。

至于这个“重新建立”以后究竟应该怎样被工程化,是另一层问题。

这种克制其实很重要。

因为一旦过早把一个理论判断写成操作流程,很容易把一种可能的实现误认为理论本身。不同系统完全可能采用不同方式重新确认资格,而 Execution Gap 真正关心的只是:到了最终执行时,那些使动作取得现实资格的条件是否仍然成立。

换句话说,安全真正需要面对的并不是“系统有没有改变”。

现实一定会改变。

更关键的问题是:

当现实改变以后,我们是否还在使用一个只对过去有效的判断。

Change 看的是对象,Execution Gap 看的是关系

写到这里以后,我觉得 Change 与 Execution Gap 之间最大的区别,其实已经非常清楚。

Change 首先看一个对象自己。

昨天的参数和今天不同,这是变化;策略从版本 A 变成版本 B,这是变化;某个状态从 0 变成 1,同样也是变化。要证明这些事情,只需要比较同一个对象在两个时间点的状态。

Execution Gap 则不能只看单个对象。

它真正需要比较的是至少两个已经成立的东西之间是否仍然保持必要关系。

现在执行的动作还对应当初批准的对象吗?

现在使用的状态还是那个判断成立时所依赖的状态吗?

当前参数仍然处于授权所覆盖的范围吗?

一份 Evidence 仍然具有当前判断所需要的来源资格和现实对应吗?

这些问题已经不是“什么变了”。

它们问的是:变化以后,原来的关系还在不在。

所以有时候,一个对象发生巨大变化,却不会形成执行缝隙,因为新的关系已经被重新建立;另一些时候,只有一个很小的字段变化,却可能让原来成立的授权或者对象绑定立即失效。

变化的大小和执行偏差的大小之间,并不存在一个可以直接推导的关系。

这也是为什么 Change 最终被留在分析维度,而没有进入五类直接机制。

它告诉我们应该往哪里看,却不能替我们解释为什么偏差能够一路抵达现实。

把 Change 从“原因”里拿掉,不代表变更管理不重要

这一点我觉得很容易被误解。

如果变化不是 Execution Gap 的直接成因,是不是意味着 Change Management、配置管理、发布审核这些东西没有那么重要?

当然不是。

工程系统里的变更管理非常重要。很多事故确实发生在一次发布、一次参数修改或一次状态变化之后。组织当然应该记录变更,限制高风险操作,并在必要时建立审批、回滚和验证机制。

但这里讨论的是另一个问题:

在 Execution Gap 的解释链里,Change 应该处于什么位置。

治理上重要,不等于理论上就是根机制。

风险管理上应该重点关注,也不意味着它已经解释了为什么这次偏差能够穿过整个执行链。

我反而认为,把这两个问题分开以后,变更管理会变得更加准确。我们不再只是因为“发生过变更”就把所有注意力压在修改动作本身,而会继续检查:这次变化到底影响了什么关系,哪些过去成立的资格应该因此失效,哪些对象需要重新绑定,哪些边界需要按照当前条件重新判断。

这样一来,变化才真正成为一个有用的分析入口,而不是事故之后最方便的归因对象。

从变化走向放大

第七章完成的是一次很有限的排除。

它没有削弱“什么变了”的价值,也没有试图否定系统变化的重要性。它只是拒绝让 Change 直接占据“成因”的位置。

真正能够解释 Execution Gap 的,仍然是变化之后那些必须保持的关系为什么没有继续成立,以及这种失效最后通过哪一种机制进入了现实。

可把 Change 从原因的位置移开以后,另一个很自然的问题马上出现。

AI Agent 正在让执行发生得越来越快。一项判断可以在很短时间里调用多个工具,跨越多个系统,修改大量对象,并把一次很小的偏差迅速传播到过去人工流程难以达到的规模。

这种“更快、更大”非常显眼。

它甚至可能决定一个事故最终有多严重。

那么,它和 Change 会不会不一样?

如果“有东西变了”不是 Execution Gap 的成因,那么 AI 带来的速度、规模和自主链路,会不会因为放大了后果而成为新的直接成因?

这个问题必须单独处理。

因为我们已经看到了一次:最容易被看见的东西,并不一定就是最应该被写进“原因”那一栏的东西。

接下来,同样的标准也必须用在 AI 身上。

关于《执行缝隙》

《执行缝隙》(The Execution Gap)是Execution Engineering Trilogy第一卷。

本书讨论一个基础而关键的问题:

从人的意图,到机器最终改变现实世界,中间究竟发生了什么?

在线阅读

  • 繁體中文版 執行縫隙 | Havenlon Research

  • English Edition The Execution Gap | Havenlon Research

  • Amazon Kindle Amazon.com: The Execution Gap: The Structural Discontinuity Between Intent and Action (Execution Engineering Trilogy Book 1) eBook : Wang, Lin, Wu, Mengting, Zhang, Yong, Deng, Jiang: Kindle Store

  • Amazon Paperback The Execution Gap: The Structural Discontinuity Between Intent and Action (Execution Engineering Trilogy): Wang, Lin, Wu, Mengting, Zhang, Yong, Deng, Jiang: 9798177903347: Amazon.com: Books

© 2026 Lin Wang / Havenlon.

本文为作者手记,与《执行缝隙》正式书籍正文相互独立。 未经授权,请勿全文转载或用于商业再出版。 引用请注明作者及出处。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询