Skip to content

第八十六章 钉子

终审材料是周三下午发出来的。

林知行在内网的项目管理工具里看到通知——「可信度评分模块终审评审会,时间:周四下午两点,地点:8楼B会议室,请相关同事提前阅读评审材料」。附件是一个PDF,二十一页。

他点开。

前三页是项目概述,没什么好看的。程浩上周写的,他看过初稿。

第四页开始是技术方案。

林知行的鼠标滚轮停住了。

架构图变了。

不是微调,是重画。他之前设计的三层结构——数据层、模型层、展示层——还在,但模型层内部的逻辑完全不一样了。他写的那个分场景评分框架没了。取而代之的是一个统一评分模型:所有场景用同一套权重、同一个阈值、同一条评分曲线。

他往下翻。

第五页是数据说明。七十万条全量数据,没有筛选。他之前写的那个数据质量评分脚本、筛选后的二十三万条高质量数据、以及基于筛选数据训练出的模型——全部没有出现。

第七页是测试结果。

准确率:71.2%。

他盯着那个数字看了五秒。

然后他关掉PDF,靠在椅背上。

工位上只有他一个人。程浩今天请了假,说家里有事。对面的椅子空着,显示器黑屏,那张塑封的高潜人才证书还立在旁边,加粗的名字在日光灯下泛着一层哑光。

林知行重新打开PDF,从头到尾又看了一遍。

二十一页,每一页都干净、规范、逻辑自洽。周报的格式,PPT的节奏,学术论文的引用——程浩的风格。但技术方案不是程浩写的。程浩做不了这个。这是周睿改的。

他把两版方案在脑子里并排放了一遍。

他的版本:分场景评分框架,根据不同教育场景(数学解题、英语作文、物理实验)的特性调整评分权重。数据筛选后二十三万条,准确率89.3%。核心创新在于场景适配——同一个可信度评分在不同学科里的含义不同,不能一刀切。

周睿的版本:统一评分模型,所有场景共用一套算法。七十万条全量数据,准确率71.2%。逻辑是稳妥、安全、不出错。

89%降到71%。

分场景变成一刀切。

他的两个月浓缩成了十八个百分点的差距和一个被替换的框架。


他没有马上去找任何人。

他把PDF保存到本地,关掉项目管理工具,打开代码编辑器。屏幕上还留着他昨天写的几行代码——给可信度评分加一个新的解释模板,针对英语作文场景的评分逻辑做细化。

这几行代码现在没有意义了。如果终审通过的是周睿的方案,英语作文场景根本不存在,他写的解释模板也用不上。

他把代码编辑器最小化,打开手机。

没有新消息。

他又看了一遍终审通知。时间是明天下午两点。也就是不到二十四小时。

他想起上次中期评审。他站起来补充数据,89%打在71%旁边,全场安静了三秒。沈渡后来说他越位了。周睿在技术群里转发了他开源仓库的帖子。权限被收紧又被恢复,审批人从周睿变成沈渡。

那次之后他学到了一件事:在错误的时间展示真实,真实就变成了武器。但武器不长眼,伤到的可能是自己。

现在周睿用了另一种方式。

不是打压,不是限制权限,不是在群里转发帖子。

是改方案。

把他的方案改成一个更保守的版本,然后以项目负责人的身份提交终审。这比打压高明得多——打压是明面上的冲突,改方案是系统内的操作。周睿有权力改方案,因为他是技术总监,他是项目负责人,他是这个模块的最终决策者。

林知行打开笔记本,在空白页上写了一行字:

「分场景评分框架 → 统一评分模型。89% → 71%。」

然后他在下面写第二行:

「原因:稳妥上线比追求极限更重要。」

这是周睿的逻辑。不是错的。71%的准确率在产品层面够用,统一模型比分场景模型更简单、更稳定、更容易维护。从工程角度看,周睿的方案没有任何毛病。

但从技术角度看,这是退步。

十八个百分点的退步。一个被替换的核心框架。两个月的工作成果被压缩成了一份干净的、规范的、没有任何创新的终审材料。

他合上笔记本。


晚上八点,林知行在青旅的上铺躺着。

房间里只有他一个人。出差的销售今天退房了,新住客还没来。窗外的路灯亮着,橘黄色的光从窗帘缝隙里漏进来,在对面的墙上画了一道斜线。

他的手机亮了。

沈渡。

「明天的评审,你有两个选择。方案的对错不重要,重要的是你选哪个战场。」

他盯着这条消息看了很久。

两个选择。

第一个选择:按周睿的方案走。终审通过,项目安全落地。功劳归程浩和周睿。他继续做下一个模块,继续写代码,继续攒履历。灰色工牌还是灰色的,但至少不会变得更黑。

第二个选择:在终审会上拿出原版方案,当着所有人的面证明周睿在退步。分场景框架、数据筛选、89%的准确率——把这些摆到台面上。但这次不是越位。这次是正面冲突。

他把手机放在枕头旁边,盯着天花板。

天花板上那块水渍还在。不规则的多边形,边缘发黄。他已经看了三个月了。

沈渡说「方案的对错不重要」。

这话他信。在灵犀待了四个月,他已经明白了一件事:对错是由位置决定的,不是由数据决定的。周睿是技术总监,他说71%够用,那71%就是够用的。林知行是外包,他说89%更好,那89%就只是一个数字。

但他也听出了沈渡没说出口的那层意思。

「重要的是你选哪个战场。」

战场。不是方案,不是数据,是战场。

沈渡在告诉他:这次终审不是技术评审,是政治博弈。周睿改方案不是因为他觉得71%更好,是因为他需要证明这个项目在他的控制下是稳妥的、安全的、不需要一个外包来指点江山的。如果林知行在终审会上反驳,他打的不是周睿的技术方案,是周睿的权威。

而打权威的后果,他已经尝过一次了。

上次是越位。这次如果再站起来,就不是越位了,是造反。

他翻了个身,面朝墙壁。墙壁上有一道细细的裂缝,从天花板一直延伸到床头,像一条干涸的河道。

他想起姜意上周说的那句话:「你不是被偷了一篇稿子,你是在被整个系统消化。」

消化。

这个词很准确。系统不是在消灭他,是在消化他。把他写的代码消化成程浩的功劳,把他的89%消化成周睿的71%,把他的分场景框架消化成一个更保守的统一模型。消化完之后,他还在,但他的东西不在了。

他又想起赵鸣岐在走廊里说的那句话——「你的能力不应该被困在外包的框里。」

被困。

也不准确。框是他自己走进来的。沈渡给了他两条路,他选了外包。因为外包不需要学历门槛,因为外包可以先看看这个公司值不值得待,因为外包是他当时唯一能抓住的机会。

框不是别人给的,是他自己选的。

现在框要消化他了。

他拿起手机,又看了一遍沈渡的消息。

「方案的对错不重要,重要的是你选哪个战场。」

他把这句话拆开了读。

「方案的对错不重要」——意思是,不管他拿出89%还是接受71%,技术层面的结果差别不大。产品照样上线,用户照样使用,71%和89%在产品体验上的差距可能只有几个百分点的用户感知。

「重要的是你选哪个战场」——意思是,这次终审的真正赌注不是技术方案,是他和周睿的关系。如果他忍了,周睿会把他归类为「可用但可控」的人。如果他不忍,周睿会把他归类为「不可控的威胁」。

可用但可控。

不可控的威胁。

两个标签。两种命运。

他试着把这件事拆成最简单的结构。

两条路:忍,或者不忍。每条路后面跟着一串后果。

忍:周睿满意,沈渡失望但不意外,处境稳定但天花板可见。 不忍:周睿暴怒,沈渡可能支持也可能切割,处境危险但有破局可能。

矩阵列完了,但他发现缺了一个变量。

沈渡的态度。

沈渡说「方案的对错不重要,重要的是你选哪个战场」——这句话是中性的。他没有说你应该忍,也没有说你应该不忍。他在把选择权交还给林知行。

但沈渡想要什么?

如果沈渡想要他忍,他会说「别冲动,先稳住」。如果沈渡想要他不忍,他会说「你的方案是对的,我支持你」。

他都没说。

他只说了「选哪个战场」。

林知行盯着天花板上的水渍,想了很久。

然后他明白了。

沈渡不是在帮他选,沈渡是在看他选。

这是一场测试。不是技术测试,是忠诚度测试。沈渡想知道:在面对周睿的压力时,林知行会选择服从还是反抗。服从意味着林知行是一个可控的棋子,反抗意味着林知行是一个需要被重新评估的变量。

沈渡不在乎71%还是89%。他在乎的是林知行这个人,在压力面前会做出什么反应。

这个认知让林知行的胃缩了一下。

他把手机扣在枕头旁边,闭上眼睛。


周四下午一点四十五分。

林知行坐在8楼B会议室外面的走廊里。

走廊很安静。会议室的门关着,磨砂玻璃后面透出模糊的人影。空调的出风口在头顶嗡嗡响,吹下来的冷风让他后颈发凉。

他提前十五分钟到了。

走廊尽头的消防通道门半开着,能看到楼梯间的灰色水泥墙。旁边是一个灭火器箱,红色的漆面有点剥落。

林知行翻开笔记本。

空白页上还留着昨天写的那两行字:

「分场景评分框架 → 统一评分模型。89% → 71%。」

「原因:稳妥上线比追求极限更重要。」

他盯着这两行字,用铅笔在下面画了一条横线。

然后他在横线下面写了第三行。

不,他没写。

他把铅笔放在笔记本上,看着空白的位置。

他知道自己想写什么。

第一行:按周睿的方案走。项目安全过审。功劳归程浩和周睿。我继续做下一个模块。灰色工牌还是灰色的。安全。可控。天花板可见。

第二行:拿出原版方案。分场景框架。数据筛选。89%。证明周睿在退步。但从此成为所有嫡系的眼中钉。安全归零。天花板不可见。

两行字。两个选择。两种命运。

他拿起铅笔,把第一行写了下来。

然后他把铅笔移到第二行的位置。

铅笔尖悬在纸面上方,没有落下。

他想起昨天晚上在青旅上铺的推演。决策矩阵。沈渡的态度。忠诚度测试。服从还是反抗。可控还是不可控。

他想起方小满上周说的那句话:「你在北京学到的东西,比我们那个产品值钱吗?」

他想起姜意说的:「功能只解决当下的问题,产品定义未来的方向。」

他想起父亲放在枕头下面的火车时刻表,K572,红色圆珠笔画的圈。

他想起自己第一天到灵犀,拿到灰色工牌,在食堂发现补贴只有正式员工一半时的感觉。不是愤怒,是一种很轻的、像灰尘一样落在肩膀上的东西。

他把第二行写了下来。

两行字并排在笔记本上。

他看着它们。

算法在这时候失效了。

不是因为变量太多,是因为他不知道怎么给一个变量赋值。那个变量叫「后果」。他不知道拿出原版方案之后会发生什么。周睿会怎么反应?沈渡会站哪边?其他团队的人会怎么看他?他会丢掉这份工作吗?丢了之后去哪里?

所有这些问题,他都算不出来。

因为它们的答案取决于人心,不取决于数据。

他合上笔记本,靠在椅背上。

走廊里有人走过来。

脚步声从远到近,节奏很稳。林知行抬头。

赵鸣岐。

他穿着一件深蓝色的夹克,手里拿着一个文件夹,从走廊那头走过来。白色访客工牌挂在胸前。

他看到林知行,脚步慢了一点。

「你在干嘛?」赵鸣岐问。

林知行没有回答。

赵鸣岐走近了两步,低头看了一眼他膝盖上的笔记本。笔记本合着,看不到里面的字。

「发呆?」赵鸣岐问。

「在算一个东西。」林知行说。

「算什么?」

林知行想了一下。

「在算一个没有最优解的算法。」

赵鸣岐看着他,没有马上说话。

他把文件夹换到另一只手里,靠在走廊的墙上。墙面上贴着灵犀的企业文化标语——「用技术让教育更公平」。赵鸣岐的肩膀挡住了「公平」两个字。

「没有最优解的算法,」赵鸣岐说,「那就不叫算法了。叫选择。」

林知行抬头看他。

赵鸣岐的表情很平。不是那种居高临下的平,是那种见过很多选择之后的平。

「我以前也遇到过类似的情况,」赵鸣岐说,「在中科院,有人把我的实验数据拿走,发了一篇论文,二作给了我。一作是他导师。」

林知行没有说话。

「我当时想了三天,」赵鸣岐说,「要不要举报。举报了,论文可能撤稿,但我在那个实验室就待不下去了。不举报,就认了。」

「你选了什么?」林知行问。

赵鸣岐笑了一下。那个笑很短,嘴角往上动了一点就收回来了。

「我选了认,」他说,「但不是因为怕。是因为那篇论文不重要。它发在二区期刊上,影响因子不到五。我的课题比那篇论文重要。我不值得为一篇二区的论文毁掉自己的课题。」

他顿了顿。

「但你的情况不一样,」赵鸣岐说,「你的东西不是一篇论文。是两个月的核心工作。」

林知行的手指在笔记本封面上按了一下。

赵鸣岐看着他,眼神里有一种他没见过的东西。不是同情,不是鼓励,是一种很安静的、像在看另一个版本的自己的东西。

「别算了,」赵鸣岐说,「选你不会后悔的那个。」

他说完,直起身子,拿着文件夹继续往前走了。

脚步声在走廊里渐渐远了。

林知行坐在椅子上,没有动。

会议室的门还关着。磨砂玻璃后面的人影多了几个。空调还在嗡嗡响。冷风还在吹他的后颈。

他低头看着膝盖上的笔记本。

选你不会后悔的那个。

他打开笔记本,翻到那两行字。

第一行:按周睿的方案走。

第二行:拿出原版方案。

他盯着它们看了很久。

然后他把笔记本翻到新的一页,开始写字。

不是两行字里的任何一行。

他写的是一个名字。

他的名字。

林知行。

三个字,写在空白页的正中间。

他不知道自己为什么写这个名字。也许是因为他忽然想起了一件事——在小城的时候,他用「小林AI工作室」的名义接过张老板的项目。那时候他的名字和他的代码是绑在一起的。出了问题,张老板找的是他,不是别人。

在灵犀,他的名字和代码是分开的。代码是他的,名字是程浩的。出了成绩,表扬的是程浩。出了问题,追责的是他。

他不是在选择方案。

他是在选择——要不要让自己的名字和自己的代码重新绑在一起。

走廊尽头传来脚步声。有人从电梯那边走过来,是孙雯和赵远,手里拿着打印材料,低声在讨论什么。

他们路过林知行的时候,孙雯看了他一眼,点了点头。赵远没有看他。

一点五十五分。

会议室的门从里面打开了。

程浩探出头来,扫了一眼走廊,看到林知行。

「小林,」他说,「进来了。」

林知行合上笔记本,站起来。

他把笔记本塞进背包的侧袋里,拉了一下外套的拉链。

会议室里面已经坐了七八个人。周睿坐在长桌的一端,面前摊着那份二十一页的终审材料。他穿了一件深灰色的西装外套,袖口露出一截白色衬衫。

林知行走进去,在程浩旁边坐下。

周睿抬头看了他一眼。

那个眼神很平。不是挑衅,不是警告,是一种他已经很熟悉的东西——一个在公司待了十二年的人看一个待了四个月的外包时的眼神。

不冷不热。

像在看一件工具。

林知行打开笔记本电脑,登录会议系统。

投影仪亮了。屏幕上是灵犀的logo。

周睿清了清嗓子。

「各位,」他说,「今天的终审评审会现在开始。」

会议室的门在他身后缓缓合上。

(本章完)