SDE · AI越强,人就越弱吗?
第二编

第九章 从单一器具到复杂系统:封装的层级迭代

王德生 著 · 本章正文3,808汉字 · 打开第68页

本章小节

一、工具放在一起,不等于能力已经组合

一个工作台上可以摆满器具,任务却仍然无法完成。缺少的也许不是另一件工具,而是各个过程怎样衔接。哪一步先发生,前一步留下什么,后一步接受什么,出现例外时怎样处理,这些关系不能由工具数量自动产生。系统能力是组织出来的,不是把单项能力摆在同一位置就自然相加。

在知识工作中也一样。一个人拥有检索、生成、计算和排版工具,却可能在每个环节之间反复搬运材料、丢失出处、混淆版本。单个工具各自能做事,整体却不稳定。若只看工具清单,就会高估实际能力;若因此认定这些工具没有价值,又会忽视真正的问题在连接方式。

本章要研究的封装迭代,正是如何让原本分散的实现进入相对稳定的组织。它不是把所有东西装进一个更大的界面,而是使输入、执行、输出与反馈之间形成可持续关系。界面整合可以有帮助,但只有连接得到实际承接,新的整体单位才有意义。

这种组织也可能在实践中失败。某些工具适合独立使用,不适合无缝连接;某些活动需要保留中间讨论,而不是一口气执行到底。封装迭代不意味着所有边界都应被消除。一个好的系统有时正是通过保留必要停顿,让不应自动越过的差异能够显露。

二、接口保存的是约定,不是魔法

两个过程能够连接,通常需要对交接内容形成约定。前一过程输出某种格式,后一过程知道怎样解释它。若双方对同一个字段的含义不同,即使数据顺利传递,也可能产生错误。接口因此不仅涉及传输,还涉及意义、条件与责任范围的配合。

设想一个报名流程把“人数”理解为所有登记者,而后续安排把它理解为已经确认到场者。两个步骤各自可以运行正确,组合起来却可能产生不合适的准备。问题不在某一步算错,而在两步没有共享同样的条件。系统失败常常需要在连接处寻找,不能只逐个检查工具是否表现良好。

帕纳斯在关于模块划分准则的经典论文中强调,系统怎样分成模块,会影响其可理解性与可修改性。[8]本书不把软件模块理论等同于全部工具本体论,但从中获得一个明确提醒:单位并非越多越好,划分方式本身参与了整体能力。封装边界是需要设计与检验的关系。

对于使用者,成熟接口可以减少重复理解内部细节的负担。但约定必须足够清楚,不能把未解决的歧义全部推给调用者猜测。若一个入口声称接受任何材料、完成任何目标,却没有说明输出意味着什么,整体感越强,误解范围反而可能越大。

三、单项可靠为什么不等于整体可靠

可以用一个明确假设的算例说明组合问题。假设一项任务必须连续经过二十个环节,每个环节成功概率都是百分之九十九,并且各环节成功与否相互独立,同时任何一个失败都会使整项任务失败。那么整项成功概率是零点九九的二十次方,约为百分之八十一点八。这个数字只来自所设模型,不是对任何现实系统的测量。

算例的意义不在于真实系统必然如此,而在于“每一步看起来很可靠”不足以直接证明整体同样可靠。现实中还可能存在共同原因,使多个环节同时失败;也可能存在纠错和冗余,使部分失败不影响整体结果。不同结构产生不同可靠性,因此必须研究组织,而不能只宣传单项成绩。

人工智能工作流尤其需要区分表面多重检查与独立证据。如果多个环节只是重复同一来源的错误,增加步骤可能只增加一致的外观。反过来,一个较简单但能够回到原始材料的核验,有时更有助于识别问题。这里提出的是条件分析,不是断言某类系统必然互相附和。

系统封装的成熟,因而还包括对失败传播的处理。某一步不能完成时,是否能够停止、返回或转入不同支持?错误是否会被自动包装成成功输出?这些安排影响整体是否值得托付。只有把它们纳入,封装才不只是把内部过程藏起来。

四、保存中间状态,是为了继续而不是监视一切

一个复杂过程若只能给出最终结果,失败之后就可能难以知道问题发生在哪里。保留适当的中间状态,可以支持恢复、比较与修订。但保留并不等于无限记录每个动作。过多记录可能增加理解负担,也可能不适合包含个人材料的活动。记录颗粒需要与任务和风险相匹配。

设想社区活动方案经历了三个关键版本:最初按兴趣分组,后来发现时间冲突,再改为按时段组织。保留这些关键改变及其理由,有助于后来者理解为什么最终方案如此。没有必要为每次文字润色都建立同等详细的档案。真正有用的是能让重要选择重新进入讨论的记录。

这种记录也是封装迭代的材料。反复出现的稳定步骤可以收进新的单位,反复出错的连接需要重新设计。若只保存成功成品,系统就容易把偶然结果当成一般方法;若保存关键条件与失败,下一轮封装才有机会更准确地界定范围。

对于个人,记录的目的应当是支持能力持续,而不是把所有生活变成可计算的绩效证据。一个工作流能够回溯关键变化,与一个组织要求无限监测员工,是不同安排。工具功能不能自动决定记录的正当范围,相关用途仍需要被说明和讨论。

五、稳定接口允许内部改变

一个封装单位的内部可以更新,而调用者不必每次重新学习全部实现。这正是整体调用的重要价值。只要约定的功能、条件与结果范围得到维持,内部改进可以在适当层级发生。但若内部变化改变了实际适用范围,却仍沿用旧的接口承诺,使用者就可能在不知情的情况下承担新风险。

因此,版本不是一个技术编号而已,它关系到过去的信任能否继续适用。某个流程在旧材料上经过检验,换了实现后是否仍然满足关键条件,需要相应证据。不是每次变化都必须重新验证一切,也不是任何变化都可以不作检查。检验范围应由变化影响什么来确定。

对于用户,重要的是能够知道哪些条件发生了实质改变,而不必阅读所有底层细节。对于维护者,重要的是保留可比较的样例与结果,使变化不是凭感觉接受。两层工作相互支持,让普通调用者能够放心不介入全部内部,又不至于只能盲目信任一个永远相同的名字。

这也说明封装的独立性是相对的。内部可以相对独立运行和修改,但仍受对外约定约束。真正稳定的整体不是不再变化,而是变化能够在可说明的关系中发生。把独立理解成无需任何反馈,会让封装从成熟组织退化为封闭黑箱。

六、组织工作也可以进入下一轮封装

起初,一个人需要手工安排多个工具之间的次序;后来,次序本身可以由工作流承接。起初,他需要逐项汇总状态;后来,状态整理也可以自动完成。随着层级迭代,人所面对的颗粒可能从一个小步骤变成一段完整活动。高度与颗粒度在这里相互联系。

但这种联系不能被理解为自然人永远向上退守。组织过程本身也可能被进一步封装,目标比较与计划调整也可能获得外部支持。若我们把某一层规定为人永久独占的领地,就没有真正接受能力发生的动态性,只是把旧主体搬到更高位置。

更准确的问题是,新的整体在什么活动中被调用,又使哪些原来不能组织的关系成为可能。一个自动安排流程可以减少协调负担,也可能让人有时间进入现实反馈。若腾出的条件并未被用于任何新的活动,发生的可能只是执行扩量。高度变化需要具体说明,不宜由自动化层数代替。

组织封装也应当保留对目标变化的响应。若目标只允许在开始时输入,之后任何新情况都被当作干扰,整个系统可能高效地推进一个已经不合适的方向。成熟组织不是一条只会前进的轨道,而需要在相应层级允许重新界定问题。

七、封装有代价,展开也有代价

把过程组织成可调用整体,通常需要设计、试用与维护。对于只发生一次、变化极大的任务,投入大量封装工作未必值得。反过来,对于反复出现且条件相对稳定的过程,每次从零展开也可能造成不必要重复。决定应当依据任务结构,而不由“自动化总是先进”这类口号决定。

我们可以把代价分为建立、调用、维护和失效处理几部分。一个流程调用很便宜,却需要持续高成本维护,不能只用单次节省时间来评价;一个流程建立较慢,却能稳定支持许多后续活动,也不能因第一次不够快而否定。这里不提供统一数字公式,而是要求评价覆盖实际发生的不同阶段。

展开也需要条件。要求使用者随时打开全部内部,看似保障自主,实际上可能把大量专业负担重新转给个人。更合适的安排可能是分层说明、合适支持和明确转接,而不是人人永远面对所有细节。可展开不等于必须全展开,正如可调用不等于可以无条件调用。

因此,成熟的复合活动需要一种颗粒选择能力。这种能力本身也可以由人、工具与组织共同承担:常规时在适当整体上运行,异常时转向有关差异,条件变化时重新组织边界。我们将在颗粒度专章进一步讨论,这里先看见封装与展开之间的动态关系。

八、共同维护不是个人能力之外的附属服务

一个系统能够持续运行,往往依赖维护工作。若只把开发新功能视为能力增长,把维护视为拖累,就会低估稳定发生的条件。封装越被广泛调用,维护对整体的影响可能越大。这里的判断来自依赖关系本身:更多活动建立在同一单位上,其失效就可能波及更多后续过程。

维护可以包括修正错误、更新条件说明、处理不再适用的材料和帮助用户理解边界。这些工作不一定产生引人注目的新成品,却能够使已有能力继续有效。把它们从能力账簿中删除,会让系统看上去像一旦建成就自行存在的物体,而不再是需要持续支持的过程。

对个人来说,可靠维护减少了独自承担细节的负担;对维护者来说,清楚的使用反馈又帮助发现实际问题。复合能力在这里不是单向提供,而是多方活动形成的稳定关系。用户可以不理解全部内部,但不应完全失去报告异常与获得回应的渠道。

因此,这一编不是以五类工具替代整部技术史,而是抽取五类可以互相比较的机制:由结构承担功能、由记号维持差异、由规则组织过程、由系统协调条件、由新的认知流程进入后续活动。它们未必严格依次出现,也可以长期共存。历史案例的作用是检验框架能否作出这些区分,不是证明所有文明必然沿同一阶梯上升。

这种关系也需要公平安排。不能一边让大量人依赖封装,一边把维护成本隐蔽地压给少数无权改变系统的人。系统整体能力与参与者处境需要共同评价。技术结构中的稳定,并不能自动证明劳动安排中的合理。

九、从系统封装进入人工智能问题

本章已经把封装从单件工具推进到过程关系。新的整体需要接口、次序、状态、反馈与维护,单项能力不能简单相加,内部可靠也不能自动推出整体可靠。这些认识使我们能够更准确地看待所谓智能化工作:它不是给旧流程套上一个生成界面,就完成了新的能力发生。

人工智能带来的一个重要变化,是某些此前需要人持续解释、整理与调整的环节,也可能进入可调用过程。但这些环节的输出往往更开放,适用条件也更难穷尽。于是,系统封装既获得新的可能,又面临新的边界问题。下一章将集中讨论哪些认知过程可以被承接,以及怎样避免把一次流畅表现误认为稳定整体。

一个可用单位的背后,需要有真实承担的实现、维护与反馈。这个判准同样适用于认知工具。下一章不预设AI能够或不能封装一切,而逐项检查:哪些认知功能已经得到承接,哪些仍然只是候选结果或尚待兑现的承诺。