哈哈小说
第 6 卷 · AI 的前夜 · 第 123 章 · 65 段 · 2773 字

陷阱

第一百二十三章 陷阱

韦东来在想这件事的时候,想了整整三天。

那个"三条"的问题没有答案。不找答案,他会一直在这里打转。要找答案,只有一条路:让陆衍在一个可控的情况下暴露信息来源的差异。

他需要一个测试。


这个测试的逻辑很简单:如果陆衍的判断来自超出正常范围的信息获取,那他的答案会快,而且会精准到文件里不该被提到的细节。如果他只是经验丰富,他会给一个方向性正确但细节模糊的回答,而且会花时间。

但测试必须没有破绽。陆衍已经知道他在查,任何明显的试探都会被识破。

他想到了一个方法。

构造一份内部评审请求。

青舟有一个内部的技术评审机制,任何团队成员都可以发起,请求特定负责人对一个技术方案给出意见。这类请求很普通,陆衍每周都会收到几封,回复也是常规的工作流。

他需要构造一份看起来完全正常的评审请求,里面包含一个技术陷阱:一个错误的结论,包装成"初步建议",放进文档里。

如果陆衍有一套他不知道的分析工具,那工具会在他看到文件之前,或者看文件的同时,给出针对这份文件的信息,而那个信息会指向正确结论,不会被文件里的错误结论带偏。

如果陆衍只是经验强,他会花时间读文件,被那个错误结论卡住,花时间推导,或者干脆认为那个错误是"可接受的设计选择",然后在这个基础上给出回复。

两种反应,会产生不同的答案。


他花了两个下午,把这份文件做出来。

内容是一个真实存在的技术问题,来自 AI 中台的消息队列设计。这是他自己团队今年在处理的一个模块,他非常熟悉,所以陷阱的位置他能控制得很精确。

插图

正确的方向是:在高并发场景下,应该在消费端做背压控制,把速率调节的主动权放在下游。这是工程上更有弹性的做法,但这个判断需要对整个系统的流量模型有了解才能得出。

文档里的"初步建议"写的是:「建议在生产端增加限速逻辑,通过 token bucket 算法控制发送频率,以减少下游消费端的积压。」

这个建议在某些场景下是可以接受的。但在这个具体的设计里,它是错的:生产端的流量已经是经过整形的,消费端处理延迟才是真正的瓶颈,把速率锁在上游只会掩盖问题,不会解决问题。

把文件发出去之前,他让自己团队的两个高级工程师看了一眼。两个人都没有发现那个陷阱,都认可了文档里的"初步建议"。

这说明那个陷阱是真实有效的,不是一眼能看出来的错误。

评审请求发给了陆衍,附带一句备注:「不急,这周内给意见就可以。」


那天上午,陆衍和乔木去了新案客户柯庭的工厂。

这是新案的第一次正式预评估,柯庭带他们参观了主要的生产线,技术总监带着一份设备清单在旁边跟着。

参观的时候,陆衍没有问太多,只是走,看,偶尔在本子上记几个字。乔木在旁边拿着清单,把设备型号和生产日期对上。到最后一个车间的时候,技术总监主动提到了上次视频会议里那个 SIL 问题:「我们按你说的方向,已经把设计文档拆开重新过了一遍,有两个地方发现了潜在的不匹配。」

「哪两个地方?」

「油压控制那块,和传感融合里的一个接口。」

「接口文档给我看一下,」陆衍说,「现在就可以。」

技术总监把文件调出来,陆衍在手机上看了大约十分钟,说:「传感融合的那个接口,问题在 safety function 的响应时间定义上,文档写的是 100ms,但供应商的实际参数是 120ms,这 20ms 的误差在 SIL2 的验证要求里会造成不一致。」

插图

技术总监翻了一下文件,找到那个参数,表情变了一下。他没有说话,只是把文件截图,发给了旁边的一个工程师。

「这个问题,我们内部没有发现,」他说,「这块供应商的文档是后补的,进来的时候没有经过完整审核。」

「这不是你们的错,」陆衍说,「这类接口参数在认证文档里经常被当成次要信息,不容易被注意到。但认证机构会看这里。」

下午三点,他们离开工厂,乔木在回来的路上说:「今天技术总监的反应,他是真的没想到有人会找到那个参数。」

「他们的工程师很好,」陆衍说,「做得很认真,只是这类跨文档的参数不一致,经验上容易忽略。」

「你什么时候看出来的?」乔木问。

「进那个车间之前,」他说,「豆包扫了供应商文档概要,那个参数先报出来的。」

乔木沉默了一下。「你最近越来越顺手,」她说,「小心点,越顺手越容易被看见。」


回到公司,陆衍看到了韦东来发来的内部评审请求,附件是那份消息队列设计文档。

他先看了一眼备注:「不急,这周内给意见就可以。」

停了两秒。

平时收到他的评审请求,都带一个具体截止时间,「本周五前」「明天下班前」,从不用「这周内」这种模糊说法。「不急」两个字,尤其不像他。

他打开文件,豆包已经扫完了:「生产端调速建议有误,真实卡点在消费端延迟,不是上游吞吐。背压控制放在消费端更有弹性,在上游卡速会掩盖问题。」

插图

豆包标注推到旁边,文件从第一页翻下去,找到第四页的上下文,确认了整个系统的流量模型。

四点五十一分收到,他在五点十八分把回复打完:

「韦总,这份文档的初步建议有一个方向性问题。这个设计里生产端的流量已经经过整形,真正的处理瓶颈不在发送频率,而是消费端没有做自适应的接收控制。建议改成在消费端做背压,根据下游的处理能力动态调整接收速率,比在上游卡速更有弹性,也更容易排查问题。具体实现可以参考 Reactive Streams 的背压规范。」

把消息框关掉,没有发。

他倒了杯水,看了一眼表,坐回去。窗外的光还有一条。

五点二十七分,他把那条回复发了出去。


他看到这条回复的时候,在自己的办公室里,窗外的光还有一条细线。

他看了一下时间戳,陆衍在四点五十一分接收到了评审请求,在五点二十七分回复。三十六分钟。

然后他把这条回复的内容看了一遍,重新看了一遍,又看了一遍。

回复是对的。生产端限速那个判断,完全对,而且准确指出了"已经经过整形"这个上下文,这个细节在文档的第四页,不是第一页就能看到的。

他想了一下,用这段时间把一份二十多页的文档看完,找到第四页的上下文,识别出初步建议的方向性错误,并给出带具体实现参考的完整回复:

他自己来,需要多久?

换他自己来做,最快四十分钟,更可能是一小时以上。

插图

陆衍用了三十六分钟。

但这次不是三分钟、八分钟、十四分钟。这个时间,在正常人类的处理速度范围内。

他靠着椅背,想了一会儿。

这件事有两种解释:

一,陆衍今天有其他事,下午回来打开文件,花了这段时间认真看完了,给出了一个正确答案。

二,陆衍有一套工具,工具扫了文件,给了他结论,他花同样的时间包装了一下,发了出来。

两种情况下,答案一样,时间也差不多。没有办法区分。

他把那条回复重新看了最后一遍,然后关掉了窗口。

陷阱没有触发。有工具的人和认真看文件的人,在这种情况下,答案是一样的,时间也可以差不多一样。他测出了一件事:他测不了这件事。

窗外的最后一条光消失了,办公室里变得很暗。他没有开灯。

他在键盘上停了一会儿,打开日历,新建了一个会议邀请,发给陆衍。

标题:技术方向讨论。 时间:下周三下午。 附件:无。 备注:不需要提前准备材料。