
保修条例:AI 生成软件不可修理,只能重新生成
AI 生成软件的世界里,代码坏了不再有人修——你重新生成就是了。但维修记录上永远印着一行小字:保修条例——不可重新生成。这是一个关于"软件机械师"的近未来故事。
原文来源:Warranty Void If Regenerated — 一个关于 AI 生成软件时代"软件机械师"的近未来故事:当代码不再被"写"出来,而是被"生成"出来之后,谁来修它们?
汤姆·哈特曼从未计划成为一名软件机械师。但话说回来,没有任何一位软件机械师是计划着成为软件机械师的——因为这工种七年前还不存在,干这行的人以前都在干别的。
这在后转型经济时代的大多数行业都是如此。就像集装箱化之后、电气化之后、印刷术之后、甚至青铜发明之后一样。第一批铁匠小时候并没有梦想过打铁。他们只是擅长用东西砸别的东西,然后某天发现金属被砸的时候会有奇妙的反应。第一批软件机械师则是那些擅长诊断"技术应当做什么"和"技术实际做了什么"之间差距的人。在这个转型之前,这项技能有个名字叫"IT 支持",薪酬也相应地被低估——说直白点,很低。
汤姆原来是农业设备技师,也就是说他修拖拉机、联合收割机、GPS 导航系统和那些让现代农业运作成为可能的越来越复杂的控制软件。他在马什菲尔德的约翰迪尔经销商干了十一年。然后转型发生了,经销商的软件维修业务消失了——机器仍然需要维修,但机器上的软件不再是被"修"的东西了。你是重新生成它。你输入你想要什么,它就出现,如果它坏了,你再输入一次。也就是说,"软件坏了"这个概念已经被"规格说明不够充分"所取代。问题戴着不同的帽子,但需要一个完全不一样的人来修。
硬件仍然需要修理。发动机、液压系统、电气系统等等。这些东西依旧顽固地保持物理性。但软件层——曾经是汤姆工作里越来越大的一部分——已经被一连串生成的工具取代了。客户自己生产这些工具、自己配置、然后以全新的方式把它们搞坏。
所以汤姆适应了。他上了认证课程(八周在线学习,在区域考试中心完成实操考试),然后挂上了新招牌。招牌上写着 HARTMANN SOFTWARE MECHANICS,下面还留着原来的 HARTMANN EQUIPMENT REPAIR,因为他仍然修那些物理设备——而且在农业社区里,没人关心软件和硬件的区别。
这件事,微观上反映了整个科技行业持续了五十年的一个区分的消亡。"硬件"和"软件"曾经是独立的学科、独立的公司、独立的职业路径、独立的世界观。懂硬件的人理解原子。懂软件的人理解比特。转型把这个区分打碎了——因为当软件由自然语言规格说明生成的时候,相关的专业知识不再是"软件",而是软件所服务的那个领域本身。一个农业社区的软件机械师需要懂农业。一个医疗诊所的软件机械师需要懂医学。工具变了,领域没变。那些既懂领域知识又能诊断规格问题的人,是所有行业里最有价值的——而他们大多数人,和汤姆一样,是从其他方向转行过来的。
他的店开在 29 号高速公路旁一栋金属波纹板建筑里,在饲料店和自助洗衣店之间。等待区有四把塑料椅子和一台咖啡机。这台咖啡机是汤姆亲自写规格说明生成的,做出来的咖啡,按所有客户的共识——恰到好处,好不到哪里去。他试过三次改进规格。每一次,重新生成的固件都以一种微妙的不同方式让咖啡更难喝了。他最终得出的结论是:咖啡机的规格恰好位于流体力学、热管理和味觉这三者的交汇点——而这恰好是自然语言特别不擅长捕捉相关区别的三个领域。他放弃了。不过他倒是找到了这咖啡机的用处:每当有客户进来坚称他们生成的软件"基本没问题"且"只需要调一调",他就会指指那台咖啡机说:"我想让那玩意儿做出好咖啡想了两年了。你觉得你那 60 参数的灌溉优化器会更容易?"这招通常很有效。人们理解咖啡。
第一个客户是玛格丽特·布伦南,她在县里种了 340 英亩卷心菜和甜玉米。六个月前,她生成了一个自定义的收获时机工具,整合了土壤湿度数据、天气预报、市场价格和卫星图像,用来推荐最佳收获窗口。
整个夏天这个工具都表现得很出色。按她自己的估算,收获决策的优化帮她省了大约 4 万美元。然后上周,工具建议提前四天收获一片 60 英亩的卷心菜地。那时的菜头还没长好。提前收获让她的产品个头偏小,损失了大约 2.5 万美元。
玛格丽特很不高兴。
"它就是说了'收获',"她告诉汤姆。她坐在其中一把塑料椅上,端着一杯恰好到处的咖啡。"和以前一样。绿灯亮,收获窗口开启,置信度 94%。所以我们就收了。然后菜头就这么大。"她的大拇指和食指比出大约三英寸的距离。"再多两天它们就完美了。再多四天就很好卖了。但它说了'现在'。"
汤姆把他的诊断显示器拉出来,打开了工具的规格说明。这永远是第一步:读规格,不是读代码。代码是生成的,不透明,而且——关键的是——不是客户实际编写的东西。规格是客户想要的东西。代码是机器理解后的东西。它们之间的差距就是问题所在。
玛格丽特的规格说明比平均水平好,但这并不代表太多。大约 1200 字。它描述了数据来源(土壤传感器、天气 API、市场数据、卫星数据)、决策逻辑("当预期质量调整后收益在 14 天前瞻窗口内最大化时,推荐收获")和输出格式(绿色/黄色/红色标色加上置信度百分比)。
一个非技术人员写的平均规格说明,在汤姆的经验里,其精确程度大约相当于一个从未给别人做过饭的人写的菜谱:配料都写对了,比例也大致正确,但缺少那些作者觉得理所当然、对别人却完全不可见的关键细节。"适量调味"对知道这道菜应该是什么味道的人来说是有用的指令。但对没有味蕾的机器来说,毫无意义。农民写的规格说明往往充满了领域知识("最大化质量调整后收益"),但在防止机器做出意想不到的操作的程序化细节方面却很匮乏。这不是蠢。这是让领域专家通过一种从未为此目的设计的媒介(自然语言)与机器沟通的自然结果。
问题,汤姆猜测,出在"质量调整后收益"这个短语上。他问玛格丽特这是什么意思。
"你知道的,每磅价格乘以产量,再根据质量调整。A 级卷心菜有溢价。个头小的打折。我想在总收入最高的时候收获。"
"那工具怎么知道什么是 A 级?"
玛格丽特愣了一下。"它……知道的。它有数据。卫星图片显示了菜头的大小。"
"卫星图片显示的是冠层覆盖,"汤姆说。"不是菜头大小。不是直接显示。它从冠层覆盖、天气数据和生长度日模型推断菜头大小。而那些模型上个月刚被重新训练过——因为气象局更新了他们的历史数据集。"
他给她看。模型更新(气象数据供应商的一次例行重新校准)把生长度日计算偏移了一点点,在这个温度范围内大约 3%。这导致工具的菜头大小推断高估了成熟度大约两天。工具以为卷心菜已经熟了。卷心菜不同意。
"但我什么都没改,"玛格丽特说。
"你没改。气象局也没改任何会影响他们的东西。他们更新了历史记录,这让他们的模型在天气预测上更准确——这才是他们模型的目的。但你的工具在用这些模型来做它们不是设计来做的事——作物成熟度估算——而让天气预测变得更准确的更新,让你的收获时机变得更差。"
玛格丽特瞪着他。"所以我的卷心菜变差了,是因为天气预报变得更准了?"
"你的卷心菜变差了,是因为你的规格说明没有考虑上游模型的变化。它说'使用天气数据'。它没说'当底层天气模型被重新校准时提醒我,因为我的作物成熟度推断对特定的校准参数很敏感'。这是 AI 不可能知道它重要的细节——除非你告诉它。"
这是汤姆最常见的诊断。他看到的案例中大约 60% 是某一种变体——"外部数据源以规格说明没有预期的方式发生了变化"。工具一直完美运行,直到工具背后的世界悄悄挪动了位置。规格说明描述了一个输入和输出之间的静态关系,但这些输入是活的——来源于那些本身也在不断更新、重新校准和重新生成的其他系统。汤姆开始称之为"地面动了"的问题,因为这就像把房子盖在一个时不时往左挪几英寸的地基上。房子没问题。地基也没问题。有问题的是它们之间的关系。拖拉机不会因为约翰迪尔更新了某个数据库而自发改变发动机校准——物理工具通过磨损、腐蚀和疲劳可预测地退化,你能看到退化正在发生。而软件工具通过上游变化、模型漂移和只有在罕见条件组合下才会暴露出来的规格说明歧义来退化——你看不到任何退化正在逼近,直到它已经花掉你 2.5 万美元的个头偏小的卷心菜。
玛格丽特看了看他的显示器上的规格,又看了看自己平板电脑上的卷心菜损失数字,然后看了看手里恰到好处的咖啡。
"你能修吗?"
"我可以让它更健壮。我们在规格里加一个监控条款。每当上游数据源的版本发生变化时,工具会标记出来,并暂停建议,直到你或我确认新版本不会影响你的推断。这意味着更多的维护。你可能每个月会收到两到三次标记。但不会再有一次意外的收获了。"
"多少钱?"
"规格修订,一小时。持续监控的话……那就真得谈谈'维修组'的事了,玛格丽特。你的工具现在够多了,你需要有人定期检查它们——不只是坏了才修。"
玛格丽特做了个表情。"维修组"的谈话。汤姆每周要和客户谈大约两次这个事。从"坏了再修"到"一直有人在看"的转变,对农民来说是个艰难的销售——他们已经习惯了买一个工具,用到坏,再买另一个。软件需要持续照料,因为它周围的世界在动——这个观念对那些其他工具始终如一地稳定的来说人,是反直觉的。
"我会考虑维修组的事,"玛格丽特说。汤姆知道这是农民表达"不"的方式。
他修订了规格,重新生成了工具,用玛格丽特的回测历史数据验证了它会在气象服务更新时触发标记,然后送她走了。四十五分钟,从进门到出门。他收了她 180 美元——不到这次故障损失的 1%——她会毫无怨言地付这笔钱,同时继续拒绝每月 400 美元的维修组服务——后者本来能在问题发生之前就抓住它。
这就是机械师的悖论:相对于故障成本,你越便宜,客户就越需要你;他们越需要你,就越抗拒"还需要你"这个事实背后暗含的意思。
同样的悖论存在于人类医学中。愿意毫不犹豫地花 5 万美元做预约手术的人,会对 200 美元的年检皱眉头。修理总是比故障便宜,预防总是比修理便宜,而不知为何,钱总是流向危机,而不是远离危机。汤姆得出的结论是,这不是经济学问题,而是心理学问题:为维护付钱意味着承认弱点,而为修理付钱意味着应对紧急事件——人类觉得紧急事件比弱点更能激励行动。这大概是一种进化适应。面对眼前狮子的瞪羚活了下来。担心下周二可能出现的狮子的瞪羚分心了,然后被眼前的狮子吃了。不幸的是,软件维护是一个"下周二"的问题——而这个世界非常擅长生产狮子。
第二个客户更复杂。
伊桑·诺瓦克二十六岁,第三代奶农,也是这个县里最活跃的自定义软件生成者。在这个连最抵触变化的农场都至少采用了几种生成工具的地区,这体现了点什么。汤姆一直在非正式地追踪——伊桑在过去一年里生成了至少四十个工具,覆盖了从饲料优化到牛群健康监控、从牛奶定价到粪肥管理、再到一个基于天气调整的轮牧系统——汤姆不得不承认,这个系统确实挺聪明的。
问题是伊桑的工具互相通信。或者说,它们本来应该互相通信,而且大部分时候也确实在通信,但它们之间的连接是临时指定的,一个一个工具来,没有整体架构,也没有人管理这些交互。从系统角度来看,伊桑的运营就是一团意大利面(顺便说一句,这还真是术语。这个职业从更早的编程时代借用了这个词,没人费心去找一个更有尊严的比喻——可能因为不存在)。几十个独立生成的工具通过一堆没人设计、没人完全理解的集成关系共享数据。
伊桑来是因为他的牛奶定价工具开始输出比市场价格低大约 8% 的价格,而他的合同是基于这些价格自动谈判的。等他注意到的时候,他已经锁定了三个月的低价牛奶。
汤姆看了定价工具。规格没问题。市场数据源没问题。定价逻辑没问题。
"这从什么时候开始的?"他问。
"大概十天前?我不每天检查。它以前一直是准的。"
十天前。汤姆检查了伊桑其他工具的变更日志。十天前,伊桑调整了饲料优化工具的规格以计入一种新的青贮混合料,然后重新生成了它。重新生成的饲料工具改变了其输出数据的格式——一个小的结构性变化,当代码从修订后的规格重新生成时就会发生这种情况,因为生成器优化了整个输出结构,不只是改了的部分。
牛奶定价工具将饲料工具的输出作为其成本输入之一。格式的变化并没有断开连接——数据仍然在流动——但它导致定价工具误解析了一个字段,把每头的成本读成了每百磅的成本。这使得饲料费用看起来比实际高得多,导致利润率计算偏低,进而导致推荐价格下降。
"你改了你的饲料工具,"汤姆说。
"对,我更新了青贮比例。这对牛奶价格有什么关系?"
"一切。"
他给伊桑看了这个链条:饲料工具重新生成 → 输出格式偏移 → 定价工具误解析 → 利润率计算错误 → 价格降低 → 合同以低于市场的价格自动签署。五个链接,每个单独看都无害,合起来花了伊桑大约 1.4 万美元。
伊桑脸色发白。
"这就是意大利面问题,"汤姆说,语气并不刻薄。"你有四十个工具。它们共享数据。当你重新生成一个,你无法预测下游会发生什么——因为这些连接不是被指定的……它们就……在那里。它们有机地长成的。没人设计了系统。你设计了四十个单独的工具,它们自己长成了一个系统。"
"那我该怎么做?"
汤姆有两个答案。他两个都给了。
短期答案是修订定价工具的规格,固定预期的输入格式——这样如果上游工具改变了输出结构,定价工具会抛出一个错误,而不是默默地误解析。这是一个权宜之计。它能防止这次故障再次发生,但对其他三十九个工具和它们之间的数百个连接毫无作用。
长期答案是伊桑不想听的。
"你需要一个编舞师,"汤姆说。
伊桑的脸做出了那些年轻农民被告知他们需要一个编舞师时都会做的表情。那是一种复杂的神情,混合了"你觉得我管不了自己的系统"的怨恨和"我确实管不了自己的系统"的逐渐觉醒,再加上一个非常实际的顾虑:编舞师要花多少钱。
"软件编舞师会绘制你整个工具生态系统的地图,指定它们之间的接口,建立一个一致性层——这样当任何一个工具重新生成时,接口会在新版本上线之前被验证。这是四十个工具和一个系统的区别。"
"那要多少钱?"
汤姆告诉了他。伊桑的脸又做了一个不一样的事。
软件编舞的经济学,对那些已经内化了"软件免费"这个前提的人来说,是反直觉的。工具是免费的(或者几乎是免费的)。生成一个新工具基本不花钱。但管理工具之间的关系(集成层、数据契约、行为预期)很贵——因为这需要一个理解整个系统的人,能够预见一个部分的变化会如何传播到其余部分。汤姆想,这正是集装箱化的微观写照。集装箱廉价。组织集装箱物流(港口、起重机、铁路连接、跟踪系统、海关协议)才是所有价值和所有工作所在。集装箱是容易的部分。系统才是困难的部分。伊桑建了四十个集装箱。他没有建港口。
"我可以给你一个名字,"汤姆说。"梅根·卡拉汉。她为这个区域的大概十几家农场做编舞。她很棒。她会老实告诉你需要什么、不需要什么。"
伊桑收下了名字。他付了权宜之计的修理费。他离开时看起来像一个刚刚发现免费的东西实际上会花很多钱的人——汤姆想,这是后转型经济里的标志性体验之一。透过店里的窗户,汤姆看着他坐在卡车里,久久没有发动引擎,编舞师的号码在他手机屏幕上亮着。
午饭是主街熟食店的三明治,在工作台上吃的,同时他审阅了下午的队列。两次例行检查(季度检查计划下的客户——这是他的老年客户最能接受的"维修组"安排了),一个新客户咨询,外加一次上门服务。
上门服务是卡罗尔·林德格伦。她七十一岁,经营着一家小型有机农场(45 英亩的混合蔬菜,K 县路上有一个农场摊位,以及对所有比滴灌定时器更复杂的技术的东西的强烈反对——她认为那是农业最后的可接受创新)。她今天早上打电话说,用一种传达令她个人深感不安的信息的那种语气,说她孙子"在灌溉系统里装了些软件"。
汤姆吃着三明治,想着卡罗尔·林德格伦的灌溉系统。
他了解她的运营。按现代标准来说很简单:土壤湿度传感器连接到一个控制系统上,后者按照一个时间表开关滴灌阀门。时间表是手动设置的。卡罗尔自己设置,基于四十年的经验、天气预报和她所谓的"看土"。她的收成不错。不是最优化的,但不错。她不想要最优化。她只想用她理解的方式来种菜,用她看得见摸得着、可以用物理开关关掉的工具。
她的孙子,汤姆猜测,生成了一个优化层。这经常发生——一个年轻家庭成员,出于好意,用一个 AI 工具生成了一个自动化年长亲戚工作流程某一部分的系统,然后年长亲戚会打电话给汤姆,要么验证它,要么把它拆掉——取决于他们的性格。
卡罗尔的性格很明确:她想把它拿掉。但汤姆知道"把它拿掉"很少是全部真相。通常,在抵抗感下面,有一个真正的问题:我孙子造的东西真的更好吗?如果真的是,那对我四十年来的做法意味着什么?
这就是汤姆工作的情感核心,也是任何认证课程都教不来的部分。一个农业社区的软件机械师需要理解骄傲、传统、代际紧张,以及那种发现机器能学会你花了几十年才学会的事——而且还能做得更好一点的——特有的悲伤。问题总是相同的,无论客户是七十一岁的菜农还是心脏病专家还是老师:我还是那个做这件事的人吗?汤姆学到的是,诚实的回答不是"你仍然是专家"(居高临下)也不是"机器更好,适应吧"(残酷),而是更像这样:机器在一个维度上做得非常好,而你处理所有其他维度,工作就是它们的结合。
下午的检查平淡无奇,这才是检查的理想状态,汤姆对此比他的客户可能意识到的更感激。一个客户的土壤分析工具有轻微的校准漂移——传感器数据由一个三周前重新生成的模块处理,新版本处理小数精度的方式不同,把土壤 pH 值四舍五入到一位小数而不是两位。pH 6.3 和 pH 6.34 之间的差异,对大多数情况来说无足轻重。但对这个客户的蓝莓来说——它们对土壤酸度极其敏感——就有影响了。汤姆调整了规格要求两位小数精度,然后重新生成。五分钟。
另一个检查完全干净。汤姆怀着一种客户的引擎运转良好的机械师所特有的平静满足感,记录了这个结果。问题的缺失,从某种意义上说,是最好的结果。
然后他开车去了卡罗尔·林德格伦的农场。
农场很美——被精心照料的小型农场都是那样的。晚季的羽衣甘蓝和唐莴苣成行排列。一个冬天菜苗的温室。那个已经关门的农场摊位,上面挂着一块手绘招牌:林德格伦农场,下面用更小的字写着:自 1987 年。
卡罗尔在灌溉控制棚门口迎接他。那是一个十英尺乘十英尺的木结构屋子,里面装着阀门总成、水泵控制器,以及(现在)一个小灰盒子——汤姆认出是一个被改造的标准家庭自动化中心。
"泰勒上周末把这个装进去的,"卡罗尔指着那盒子说,表情是人们对马蜂窝和意外税单时才有的那种。"他说能帮我省水。"
"省了吗?"
"我不知道。你来了所以我才问你。"
汤姆检查了这套系统。泰勒(孙子)物理上安装得还不错。中心连上了卡罗尔现有的土壤湿度传感器和阀门控制器。规格说明就在中心的管理界面上,汤姆读了一遍。
很短。大约 400 字。泰勒指定了一个系统:读土壤湿度传感器,检查天气预报,只在土壤湿度降到目标阈值以下时才调整灌溉计划加水——同时考虑预期降雨量。目标阈值设为 60% 的田间持水量,这是混合蔬菜的标准推荐值。
生成的系统正在运行。阀门按一个与卡罗尔手动时间表不同的时间表开闭,总体上用更少的水实现了更精确的时机控制。土壤湿度数据显示,系统比卡罗尔手动方法更一致地维持了目标水平。
客观上,它更好。
汤姆看着那一排排羽衣甘蓝。它们看起来和平时一样——健康的。绿的。卡罗尔的。
"怎么样?"卡罗尔说。
这就是在一个社区里当机械师的问题。技术答案很清楚:泰勒的系统用了大约 15% 更少的水,同时维持了更一致的土壤湿度,这可能会略微提高产量、降低水费。系统本身写得很好,没有安全问题,正在做泰勒想让它做的事。
但汤姆不是来把技术答案翻译给人类问题听的。卡罗尔问的不是系统能不能工作。她问的是:她还是不是那个种菜的人。
"系统用了大约 15% 更少的水,湿度保持得更一致,"汤姆说。"就维持目标土壤湿度这件事来说,它做得不错。"
"但是?"
汤姆喜欢卡罗尔。他尊重那些在他还没说"但是"之前就听到它的人。
"但是它在维护一个单一的数字。60% 的田间持水量,到处都一样,每时每刻都一样。你的手动时间表不这么做。你的手动时间表……更杂乱。你给羽衣甘蓝比给唐莴苣多浇了水。南边行比北边行浇得少。你会为了不在传感器数据里的东西进行调整——菜看起来怎么样、你去年在那里种了什么、温室旁边那个排水不太好的位置。"
卡罗尔点了点头。"温室旁边那块地底下有黏土。水容易聚积。"
"对。泰勒的规格不知道这个。它的规格说'基于传感器读数维持 60% 田间持水量'。那位置上的传感器读数偏低——因为黏土在传感器深度以下保水。所以系统给它过量浇水了。"
"我有意识地对那块地少浇水已经三十年了。"
"我知道。你的手动时间表编码了三十年来对这块特定土地的具体知识。泰勒的规格编码了蔬菜灌溉的一般原则。一般原则是正确的。你的具体知识也是正确的。它们在大约四处地方有冲突。"
汤姆渐渐明白,这就是整个后转型经济的核心紧张关系——用 45 英亩蔬菜来表达。AI 系统非常擅长一般原则。它们可以为目标做优化、考虑可测量的变量、比任何人类都更快地响应数据。但它们无法捕捉那种在某个特定地方几十年物理存在才能积累的深层知识——温室下面有黏土、鹿道压实了东北角的土壤、盛行西风把远处的行比树线庇护下的行吹得更干。这些知识在卡罗尔的脑子里,不在任何数据库里——而且这正是自然语言规格说明最不擅长捕捉的那类知识,因为它是具身的、依赖上下文的、常常无法用语言表达的。卡罗尔不知道自己刻意对那块黏土地少浇水。她只是那样做了。她的手知道。AI 的规格无法捕捉卡罗尔的手知道的东西——因为卡罗尔无法用语言把它表达出来,而语言是 AI 唯一理解的东西。
"那我该怎么办?"卡罗尔问。
汤姆给了她三个选项——这是他在技术答案和人类答案分叉时的标准做法。
第一个很简单:把系统完全拆掉。回到手动。卡罗尔的方式一直有效。已经有效了几十年。没什么好羞耻的。第二个更复杂一些:保留系统,但加入卡罗尔的知识。汤姆会坐下来和她一起,把她的具体知识翻译成规格语言(黏土地、排水模式、不同作物的偏好——全部),系统就会变成泰勒的优化逻辑和卡罗尔三十年场地具体知识的混合体。这是最好的技术方案,但需要几个小时,而且每当卡罗尔对土地有了新认识时都需要更新——这比人们意识到的更频繁,因为如果你用心观察,土地总在教你新东西。第三个选项是汤姆猜她会选的那一个:把系统当基线,让卡罗尔可以覆盖它。系统会运行泰勒的优化方案,但卡罗尔会有一个物理的覆盖开关(一个真实的开关,装在墙上,她可以在任何时候拨动它来接管手动控制)。系统会记录她何时覆盖以及为什么覆盖,随着时间的推移,这些覆盖的数据会反馈回规格说明中,逐渐融入她的知识。
卡罗尔毫不犹豫地选了第三个选项。汤姆预料到了。这让她保留了她的权威。机器可以建议。她来决定。那个物理开关(真实的、可以触摸的、用手拨动的开关)比任何软件接口都重要。
汤姆在他职业生涯的早期就学会了总是提供一个物理控制。一个按钮。一个开关。一个杠杆。客户能够触摸的东西。这不是技术上的必要——任何覆盖都可以在软件中实现。这是心理上的必要。感觉机器正在替自己做决定的人会反抗。感觉机器正在做出建议、而自己能物理否决的人会接受。区别是一个五金店卖 4 美元的拨动开关。汤姆的卡车里常备一箱这样的开关。他认为这是他的工具箱里最重要的工具——因为它们解决了任何规格说明都解决不了的问题:人类控制自己土地、自己工作、自己生活的需要。机器可以优化。而那个开关在说:但由我来选。
他安装了开关。他设置了日志。他教卡罗尔如何在平板上阅读覆盖日志——"你也可以忽略它,我来检查的时候再看"。他给了泰勒的系统一个健康证明,附注了关于卡罗尔的知识和系统逻辑冲突的四个地方。然后他让卡罗尔站在她的灌溉棚里,一只手放在新开关上,另一只手握着一杯茶,望着她那一排排羽衣甘蓝,脸上带着一个被告知机器更好之后平静而毫不戏剧性地做出了决定的女人的表情:更好,不是唯一重要的东西。
汤姆在夕阳越过田野的时候开车回店。29 号公路两旁的土地是各种农场的大杂烩——一些像卡罗尔家这样的小而手工,一些大型且高度自动化,大多数介于两者之间。所有这些农场,到现在为止,都在运行着一定量的生成软件。所有这些农场,在某个时刻,都会需要一个机械师。
他明天有六个预约。一个种蔓越莓的,害虫检测工具在报假阳性。一个养牛的,自动饲喂系统开始在不知不觉中多投放 10% 的谷物——原因要么是规格说明歧义,要么是上游数据变化,或者偶尔,生成代码里确实有个 bug,但因为没有人写过这些代码,所以也没人能修。一个有机认证合作社需要验证他们的文档系统合规。另外三个他还没来得及看。
工作很稳定。而且会一直稳定下去——因为工具在变得更好,但规格说明没有跟上,规格说明底下的世界也没有变得更简单。每个季节都带来新品种、新法规、新的天气模式、新的市场动态、新的数据源、新的模型、新的集成、新的方式让意图和执行之间的差距表现为被淹的田、卖低价的合同、或者一块被过度浇水的黏土地。
他把车停进店前的停车场。建筑上的招牌——HARTMANN SOFTWARE MECHANICS,下面是 HARTMANN EQUIPMENT REPAIR——被门上的安保灯照亮着。两块招牌都是准确的。他修东西。有些东西有发动机。有些东西有规格说明。所有这些,都属于在复杂世界中努力种食物的人们——而且它们全都,迟早,需要一个能看到地面在哪里挪动了位置的人。
汤姆·哈特曼是一名持证软件机械师(SM-II 级,农业系统方向),在威斯康星州马什菲尔德执业。他平均每天接待 6-8 个客户。他的诊断成功率为 94%,高于全国农业 SM 从业者的平均水平。他仍然也修拖拉机。
玛格丽特·布伦南的卷心菜田恢复了。下一轮收获时菜头都长到了标准大小。她还没有签约维修组服务,但已经开始每周检查两次她的工具变更日志——汤姆觉得这是进步。
伊桑·诺瓦克雇了梅根·卡拉汉来编舞他的工具生态系统。项目花了三周,费用比他的卡车还贵。自那以后他没有再出过集成故障——他归功于梅根。梅根则归功于她也 quietly 删除了伊桑四十个工具中的十一个,理由是它们冗余、矛盾,或者——就一个已经自信地生成了四个月毫无意义报告的粪肥分析工具而言——"连错都算不上。"
卡罗尔·林德格伦平均每周使用覆盖开关三次。灌溉系统表现良好。她没有告诉泰勒关于黏土地的事——因为她在等他亲自发现它,她认为这是他教育的重要部分。
哈特曼软件机械师的咖啡机继续产出恰到好处的咖啡。
© 2026 四月 · CC BY-NC-SA 4.0
原文链接:https://aprilzz.com/ramble/warranty-void-if-regenerated
相关文章
LLM 必然主义:为什么大语言模型是不可逆的技术转折点
LLM 不是又一个技术泡沫,而是计算范式的根本转变。就像互联网和智能手机一样,它不会消失,只会越来越深地嵌入基础设施。
软件的 Emacs 化:AI 正在让每个人都变成自己软件的作者
当 AI 代理可以用 30 分钟生成一个比 App Store 上更好的原生应用,软件开发正在经历一种类似 Emacs 文化的大众化转变——每个人都能为自己构建专属工具。
Grug 脑开发者的智慧:一个自嘲的程序员怎样看透软件工程的复杂性
《The Grug Brained Developer》用原始人 Grug 的口吻,讲述了一个资深开发者对软件工程复杂性的深刻洞察——从说不的艺术到测试的辩证法,从微服务的陷阱到类型系统的价值。