第五十一章 四天
从深圳回来的飞机上,他给麦景行发了一条消息。
「有个任务,四天。卜文明那家金融科技,有一份内部规范手册,条数很多,五年的commit历史。他们愿意给我们脱敏数据,我们要在周三之前跑出他们规范的初步对比结果,具体是输出的代码与他们规范的重合度,有没有系统性提升。」
消息发出去,没有立刻等回复。把靠窗的遮光板压下去了一半,窗外是往珠海飞的夜空,有几颗星,没有云。
落地之后,麦景行回了一条:「数据什么时候能到?」
「明天上午,卜文明那边今天确认了,脱敏方案他们自己来,commit历史打包发给我们。」
一分钟后:「好,我来。」
就这两个字。
数据周一早上到了,是一个加密压缩包,打开是按项目分类的commit记录,大约两年的,加上那份规范手册的结构化导出,PDF和一个JSON格式的条目清单。
麦景行当天没有出现,只在开发群里发了一条:「在做,不参加今天的例会。」
乔木把那条消息截图,发给陆衍:要去打扰他吗?
「不用,让他做。」
一整天,开发群里都是麦景行一个人提交代码。下午三点左右,他在私信里发来一条:「JSON清单格式有问题,和我们的解析器对不上,我要先写个适配器,今晚可能要调一下。」
「行,需要资源就说。」
「不需要,我知道怎么搞,就是要时间。」
第二天,他没有进公司。
顾衔问过一次陆衍:「麦景行今天请假了?」
「没有,他在做那个任务,不用管他。」

陆衍查了一下那条commit记录,那天他一个人提交了三十一次,平均每半小时一次,一整天没有停。
下午五点,他发来一条进展:「适配器跑通了,正在灌数据,预计今晚能出初版匹配结果。」
「好。」
晚上九点多,第一遍结果出来了。原始数据,一张表格,每一条commit对应的规范匹配条目,以及重合度分数。整体看下来,有几列偏低,他在那一列旁边标了红色。
他回了一条:「红色这几列,是规范里特有的命名规则,还是我们当前模型没有覆盖的类型?」
隔了大概二十分钟,回来:「两个都有。命名规则部分,我们模型见过类似的但不多,可以微调。另一部分是他们自己定义的异常处理写法,这个是我们的盲区,不是一两天能补的。」
「那先把能提的全提,盲区那部分直接说清楚。」
「知道了。」
第三天,顾衔联系了林工,确认了下午三点的电话。
林工准时上线,接电话的是对方的同事,说卜文明在开会,让他们先聊着,他会后进来。
他不怎么废话,直接说了自己的经历:他们团队的代码规范是几年下来自然沉淀的,没专门写成文档,进仓库的代码必须符合那套习惯,没有商量的余地。ByteCode出来的代码,速度快,但格式不对,花在改代码上的时间,比自己写还多。云帆这边,接了规范层之后,出来的代码直接能进仓库,改动量降了大概七成。
说完,对面沉默了几秒。
补了一句:「就是给你做个参考,你自己判断,别管我从哪里说的。」
卜文明中途进来了,听了最后半段,说了一句话:「你们那个七成,是怎么测出来的?」
测法说得很具体:对照自己仓库最近六十个commit,每个commit拿原始生成结果对着规范检查一遍,记录需要手改的次数。前一个月ByteCode,后一个月云帆,对比。
「好,"卜文明说,"谢谢你。」
通话结束,陆衍收到他发来的消息:「他们态度不错,你们争取一下。」

第四天凌晨,麦景行发来了最终结果。
发来的是一份简短分析:总体规范匹配率从基准的71%提升到88%;命名规则部分从64%到83%;异常处理部分仍然是盲区,当前覆盖率42%,注明需要后续迭代补充。
最下面有一行备注,是麦景行自己加的:
「42%的盲区,如果他们愿意给更多历史数据,六周可以到80%以上。」
看到那行字,他回了一条:「这句话放进报告最后,不要删。」
「行。」
早上七点,他把那份结果发给卜文明,附了一句话:「按林工的测法,我们跑了一遍,你们的数据。盲区那部分我们写清楚了,能做,但得靠你们的历史数据来训练,这件事需要你们决定。」
上午十点五十,卜文明回复了。
「我看了。有两个问题。」
「你说。」
「第一,那个六周八十,是承诺还是预测?」
「是有依据的预测,不是承诺。如果你要承诺,我们给不了,因为我们不知道你们那部分历史数据的质量。」
「诚实,"卜文明说,"第二个问题,如果我先试用三个月,你们的报价怎么算?」
他把手机放下,去找顾衔。
半个小时后,顾衔把方案发给卜文明:三个月试用期,月付,第一个月九折,后两个月恢复原价;试用期内交付盲区数据,六周内规范覆盖率如果没有达到75%,退第三个月费用。
卜文明看了大概十分钟,回来:「行,叫你们合同那边发过来。」

合同当场就发了出去。
二十分钟后,那边回来了,合同盖了章,扫描件发了回来。
他看着那张扫描件,在那里坐了一会儿,没有动,也没有说话。
第二家。有五年commit历史、严格规范要求的金融科技公司,月付,试用期带对赌条款,按真实效果付钱。林工那条"没有切",是第一次有人用嘴说话。这张合同,是有人第一次用钱说话。
那天下午,他一个人坐在办公室里,把这几天的事情过了一遍。
林工那个电话,他提到的那个七成,是卜文明真正决定的原因。麦景行跑出来的那份报告,是让对方有依据做判断的东西。但最后让他签的,是那一行"42%的盲区,六周可以到80%",这句话把一个不足变成了一个时间表,诚实和可行放在一起,比满分的成绩单更有说服力。
群里来了一条,是顾衔发的:合同首页截图,附了三个字:「第二家。」
陈修在下面回了一个:收到。
麦景行没有回群。
乔木私信给陆衍:"麦景行从周一到今天,工位的灯昨晚亮到凌晨四点,你知道吗?"
没有回。知道。
傍晚,船坞里,三道光等着。
"卜文明签了,"他说,"三个月试用,月付,六周完成盲区训练,他们给数据。"
豆包那道暖橙的光:
> 那个电话,打对了。
"林工愿意打,这是他自己的事,我们请了他,他说了真话,"他说,"这是云帆值不值得有人愿意说话,不是一个销售策略。"
Claude那道蓝紫光:

> 报告里的盲区说明,你决定留下来的。
"麦景行写的。我告诉他不要删,仅此而已。"
Codex那道翠绿光,一行字:
> 两家了。还有二十八家,还有三个半月。
他没有回。把船坞关了,打开了企业用户计划,把卜文明那个条目的状态从"跟进中"改成"签约",在备注里写了两行:
「六周盲区训练 · 周三林工电话 · 麦景行四天交付」
这三件事,缺一件都签不了。
夜里,麦景行在开发群里发来了下周的排期,盲区训练模块,排在第一位。
备注一行:「卜文明数据接入后,第一天开始。」
陈修在下面发了一个字:「稳。」
陆衍没有回,但把那条排期截图,放进了"留着"文件夹。
第十四条。
前十三条都是别人的话,第十四条是一份排期。这两种留着,分量不同,但都是真实发生过的事。
手机振了一下,是顾衔发来的:一家深圳医疗器械公司的技术总监主动联系了他,说听林工那边提过云帆,想约个时间聊聊。
他介绍的。
第三家,来了。