第2章 直觉不是证据
那天晚上,我做梦都在还钱。
梦里那辆午夜蓝的帕拉梅拉停在松园三栋楼下,车门上的划痕越长越长,最后变成一张银行卡账单。账单上写着三万五千八,后面还很贴心地附了一行小字:支持校园卡分期。
我惊醒的时候,宿舍灯已经熄了。
王浩在对面床上打呼噜,声音像老旧风扇转到最高档。阳台外有人在水房洗脸,塑料盆磕在水池边,哐当哐当。九月初的东江还闷,蚊子隔着蚊帐绕圈,楼下有学长抱着吉他唱跑调的《晴天》,唱到副歌时被宿管阿姨一句“几点了”吼没了。
我摸到手机,看了一眼时间。
凌晨一点十三。
林疏影那条短信还躺在屏幕里。
“明天下午两点,别迟到。以及,先把掌心擦药。林疏影。”
我盯着“别迟到”三个字,心里又沉又热。沉的是那道三到五万的划痕,热的是一个比我大六岁的女人,在我最狼狈的时候,没有把我当成麻烦扔开。
但这份热很快被现实按了回去。
我打开电脑,屏幕亮起来的一瞬间,王浩翻了个身,迷迷糊糊地骂:“陈木,你半夜修仙啊?”
“写点东西。”
“情书?”
“还债方案。”
王浩安静了两秒,半张脸从蚊帐里探出来:“兄弟,你要真欠了豪车钱,我可以贡献我的校园卡余额。”
“多少?”
“二十七块六。”
我说:“你留着买鸡腿吧。”
他嘿嘿笑了一声,又缩回去:“那你别太急。真不行,咱俩周末去发传单,听说地铁口一天一百二。”
这句话很土,却让我心里松了一点。
大学宿舍就是这样,上一秒还觉得天塌下来,下一秒有人拿二十七块六跟你一起顶。窗外热风卷着洗衣粉味钻进来,我把掌心重新涂了碘伏,打开一个空白文档,开始写明天下午可能要用到的脚本思路。
我给文件命名为“debt_save.py”。
写到一半,我自己都觉得丢人,又改成“campus_trade_check.py”。
第1章那张打印纸上的几列数字,我已经背得差不多。新增用户、活跃用户、成交单数、举报数。我按照想象中的字段结构写了几个函数:按注册时间分桶,按设备指纹聚类,按交易路径计算转化率,再把异常账号导出来。
写完时,我盯着屏幕,忽然有种很熟悉的兴奋。
高中打信息学竞赛的时候,我最喜欢这种感觉。世界被拆成输入、输出和边界条件,只要找到规律,问题就能被解决。那一刻我甚至差点忘了自己只是个刚报到的大一新生,忘了我连真实数据长什么样都没见过。
直到我看到代码第一行。
`import pandas as pd`
我电脑里根本没装 pandas。
宿舍网又慢得像在水里游。清华源切过去,进度条一会儿百分之三,一会儿超时。凌晨两点半,我抱着电脑坐在床上,听王浩磨牙,听隔壁宿舍有人打游戏骂“别送”,心里第一次很清楚地意识到,所谓理工科天赋,落到现实里,可能连一个包都装不下来。
第二天早上,辅导员在阶梯教室开新生班会。
教室里全是新买的书包味、洗发水味和豆浆油条味。前排女生把口罩叠好压在笔记本上,后排男生一边扫码进班级群一边互相问“你高考多少分”。投影仪上放着《东江大学信息工程学院2020级新生入学教育》,第一页就是防诈骗。
辅导员姓周,戴着眼镜,说话很快:“最近有冒充学长卖二手教材、校园卡充值、考研资料的,大家不要私下转账。任何要求先交订金的,都先在群里问一下。”
我听到“二手”两个字,笔尖停了一下。
王浩坐我旁边,胳膊肘碰我:“你下午真去见那个女车主?”
“嗯。”
“她多大?”
“不知道。”
“漂亮吗?”
我看了他一眼:“你关心点正事。”
王浩压低声音:“这就是正事。万一人家是骗子呢?先用豪车套住你,再让你去创业中心干活,最后把你卖去写代码。”
“卖去写代码还包饭吗?”
“包饭我也去。”
我差点笑出来。
辅导员在台上敲了敲麦:“后排两位同学,有什么投资项目也分享给大家听听?”
全班刷地回头。
我脸一下热到耳根,王浩举手:“老师,我们讨论反诈。”
周老师盯着他看了三秒:“那很好。下午学院还有实验室开放参观,别迟到。”
“下午?”我愣住。
王浩小声提醒:“群里昨晚发了,你没看?两点半,老实验楼。”
我心里一沉。
两点,创业孵化中心。
两点半,学院实验室参观。
大学生活没有因为我欠了钱就给我让路。它照样排满班会、群通知、饭点、体测、宿舍卫生和各种“必须参加”。我拿出手机,给王浩发了一条消息:下午帮我跟辅导员说一声,我晚点到。
王浩回了个表情包:替兄弟挡刀,记得请我喝蜜雪冰城。
中午我没去三食堂排鸡腿,只在路边买了两个包子和一杯无糖豆浆。创业孵化中心在学校东门附近,一栋玻璃幕墙的小楼,门口贴着“互联网+大学生创新创业大赛校内选拔”的红色横幅。楼下有学生团队摆摊招新,桌上放着亚克力牌子,写着“AI社群运营”“校园跑腿”“无人零售柜”,每个词都像那几年最热的风口,被打印出来摆在太阳底下。
我提前十五分钟到。
电梯口的镜面反光里,我看见自己穿着洗到发白的黑T恤,电脑包边角磨破,掌心贴着一块歪歪扭扭的创可贴。旁边一个男生穿白衬衫,夹着路演材料,头发打理得像刚从宣传片里走出来。
我忽然有点想退。
这不是我熟悉的竞赛机房。这里的人说“用户增长”“融资”“闭环”“转化率”,而我连帕拉梅拉车门为什么那么贵都要别人教。
手机震了一下。
林疏影发来两个字:“到了?”
我回:“到了,在一楼。”
她很快回复:“上三楼。别紧张,今天不是审你。”
我看着这行字,呼吸慢了一点。
三楼会议室门半掩着。里面传来投影仪风扇的声音,还有一个男生自信的声音:“我们的平台目前覆盖东大、东理工、医科大三所高校,累计注册用户两万一,月GMV十二万。下一步准备引入AI风控模型,识别异常交易……”
我推门进去时,声音停了一下。
林疏影坐在长桌靠窗的位置。她今天穿了件浅灰色针织开衫,里面是白色衬衫,头发没有完全扎起来,只用那根黑色发绳松松束在脑后。她面前放着一杯低糖奶茶,杯壁上贴了便利店的标签,旁边还有一小盒创可贴和一支护手霜。
她抬眼看我:“陈木。”
会议室里另外几个人也看过来。刚才路演的男生二十出头,胸前挂着“校园换换”项目负责人的牌子,名字叫宋启。旁边还有个短发女生在记笔记,另一个穿西装的年轻男人坐在林疏影右手边,像她公司的同事。
宋启笑得很客气,眼神却把我从头到脚扫了一遍:“林总,这位是?”
“我请来的临时观察员。”林疏影说。
“学生?”
“大一。”
空气安静了一下。
宋启脸上的笑没有变,但语气轻了些:“大一就能看我们的风控数据,挺厉害。”
我听出来那不是夸奖。
如果是昨天下午以前,我大概会立刻想证明自己。可掌心那点刺痛提醒着我,急着证明的人最容易把直觉当结论。
林疏影把一份文件推给我:“脱敏样本。只能现场看,不能外传,不能拍照。你可以用自己的电脑跑脚本,但导出的结果要当场删除。”
她说这些时,没有因为我穷、我欠她钱就放松任何规则。那种边界感反而让我安心。
我点头,打开电脑。
五分钟后,我的安心碎了一地。
真实数据和我想象的完全不一样。字段名不是我写好的那些,设备指纹被哈希后又截断,IP只保留了网段,交易状态分了十几种,举报字段里还有“咨询未成交”“聊天拉黑”“平台外转账提醒”这种我没见过的分类。
我的脚本跑到第三行就报错。
会议室的投影幕还亮着,宋启正在讲他们的算法模型。我这边屏幕上红色的 Traceback 一行接一行,像当众把我的脸皮撕下来。
林疏影偏头看了一眼,没有替我遮,也没有替我解围。
她只是低声问:“错在哪?”
我喉咙发干:“字段名不一致。”
“只是字段名?”
我硬着头皮往下看:“还有数据口径。我把举报数当成交易后举报,但他们这里把聊天阶段的风险提醒单独算了。”
“所以?”
“所以我昨天那个判断不成立。”我说。
这句话说出来,比承认没钱还难。
宋启正好停下来喝水,听见了,笑了笑:“这很正常。截图看数据和后台看数据不是一回事。我们做项目一年多,很多口径外人不了解。”
我耳朵发烫,却没反驳。
林疏影端起奶茶喝了一口,像随口聊天一样问:“你们这个低糖是三分糖还是五分糖?”
宋启愣了一下:“啊?”
“没事。”她看了眼杯壁标签,“我只是确认一下,很多人说低糖,其实只是把标准换了。”
会议室又安静下来。
我忽然听懂了。
她不是在问奶茶。
她在问数据。
我重新低头看那份样本,不再急着证明“他们造假”,而是先把每个字段的定义抄在本子上。注册时间、首次浏览、首次发布、首次私信、订单创建、订单取消、投诉入口、平台外转账提醒。
林疏影没有催我。她把护手霜挤在手背上,慢慢揉开,柑橘味很淡。阳光从百叶窗缝里落下来,她的影子被切成几段,落在会议桌上。她偶尔抬头问宋启一个问题,每个问题都不尖锐,却正好卡在关键处。
“GMV十二万,是支付流水,还是你们按成交意向估算?”
“AI风控模型的训练集来自哪里?人工标注是谁做的?”
“如果用户转到微信交易,平台如何确认后续风险?”
宋启的回答越来越长,额角也慢慢有汗。
我在旁边听着,突然明白她为什么不一开始就说怀疑。真正厉害的人不是声音大,而是能把别人漂亮的PPT一点点拆回现实。
二十分钟后,我终于发现了一个小口子。
不是新增用户,也不是成交单数。
是“首次私信时间”。
正常用户注册后,会先浏览、收藏、比价,过一会儿才私信卖家。可样本里有一批账号,注册后九十秒内就直接私信同一个卖家,而且没有浏览记录,像是被某个外部链接直接导进来的。
更奇怪的是,这批账号的订单最后大多显示“用户自行取消”,没有进入投诉统计。但在聊天风险字段里,出现过“平台外转账提醒”。
我把筛选条件写下来,心跳一点点快起来。
“林总,”我开口时声音有点哑,“我不确定这算不算造假,但这里有一批路径不正常的用户。”
宋启立刻皱眉:“什么叫不正常?新生进群以后直接找学长买二手教材,很常见。”
“常见不等于正常。”我说完,又意识到语气太冲,停了一下,“我的意思是,需要看入口来源。如果他们不是从平台首页进来,而是从群链接进来,平台的风控模型可能根本没覆盖这段路径。”
林疏影看着我:“你现在是在下结论,还是提出需要验证的问题?”
我把嘴里的“肯定有问题”咽回去。
“提出问题。”我说,“需要验证入口来源、卖家ID、聊天关键词,还有取消订单后的风险记录为什么没进举报数。”
她眼里终于有了一点很浅的笑意。
“这句比昨天更像样。”
我不知道为什么,被她这样轻轻一说,心里比拿了竞赛奖还踏实。但这种踏实没有飘起来,因为下一秒,宋启就把投影笔放到桌上。
“林总,”他说,“我们愿意开放更多数据,但让一个大一新生现场质疑团队,是否有点不合适?”
会议室里的气氛一下紧了。
我手指扣在电脑边缘,掌心创可贴被汗浸得发软。那一瞬间,我很想退回去,说我只是帮忙看一下,不代表任何意见。
林疏影却没有马上替我说话。
她看向我:“陈木,你自己回答。”
我愣住。
她的意思很明显。机会给了,但话要我自己站住。
我抬头看着宋启,尽量让声音稳一点:“我不是质疑你们团队,我是在质疑这份数据能不能支撑你们PPT里的结论。如果是我看错了,我当场道歉。但如果你们要拿‘AI风控覆盖异常交易’去融资,至少要证明平台外导流这一段也被覆盖。”
说完,我后背全是汗。
宋启的脸色沉了一点。
林疏影把奶茶放下,杯底轻轻碰到桌面:“宋启,他的问题成立。你们下次路演前,把入口来源和取消订单后的风险链路补上。今天先到这里。”
短发女生低头记笔记,西装男人合上电脑。宋启看了我一眼,那眼神里没有刚才的客气了。
散会时,林疏影走在最后。她把那盒创可贴推到我面前:“你这个快掉了,换一张。”
我下意识说:“不用。”
“陈木,”她叫我的名字,语气很平,“拒绝帮助和承担责任不是一回事。”
我怔了怔。
她又补了一句:“一块创可贴,不计入债务。”
我没忍住笑了。
她也笑了一下,很短。那一瞬间,她不像会议室里那个把项目负责人问到冒汗的投资人,更像一个会认真研究低糖奶茶、会嫌办公室绿萝难养、包里随手放着创可贴的姐姐。
我换创可贴的时候,她站在窗边回消息。手机壳里的橘猫拍立得露出一角,她指尖很快,眉头却轻轻皱着。
“猫生病了?”我不知怎么问了一句。
她抬眼看我,似乎有点意外。
“没有。它把我阳台上一盆薄荷啃秃了,阿姨发照片来告状。”
我想象了一下那只橘猫对着薄荷下嘴的样子,笑意没压住。
林疏影看着我:“你笑什么?”
“觉得它挺有商业头脑。”我说,“把你的薄荷库存清掉,逼你复购。”
她眼里那点笑意深了些:“照你这么说,我还得给它投一轮?”
“看它有没有增长曲线。”
我们就这样站在创业孵化中心三楼的走廊里,说了两句完全没用的废话。楼下有学生喊“扫码加群送帆布袋”,远处操场传来军训队列试哨声,空气里有奶茶、打印纸和太阳晒过玻璃的味道。
我忽然觉得,欠债这件事仍然沉甸甸压着我,但它旁边多了一条细小的路。
不是通向她。
至少现在不是。
而是通向一个我以前没见过的世界。那个世界不会因为我会写几行代码就给我掌声,也不会因为我年轻就原谅我的错误。它要求证据、规则、表达和承担。
林疏影收起手机:“下午还有课?”
“学院实验室参观,我已经迟到了。”
“那还不走?”
我把电脑塞进包里,又想起最重要的事:“车的定损……”
“还没出来。”她说,“出来我会告诉你。今天这件事,只能说明你有一点观察能力,不能抵三万块。”
“我知道。”
“不过,”她看着我,“可以先抵掉我对你‘只会嘴硬’的那部分怀疑。”
我脚步停了一下。
这句话不算夸奖,却比夸奖更让我心口发烫。
我赶到老实验楼时,实验室参观已经接近尾声。王浩站在门口替我望风,一见我就把一张宣传单塞过来:“快,辅导员刚点过名,我说你拉肚子。”
“你能不能编个体面点的?”
“体面不真实。”他理直气壮,“你脸这么白,像真的。”
我跟着队伍混进去,听学长介绍机器人实验室、ACM训练队和大创项目。风扇在头顶吱呀转,桌上堆着焊锡丝、杜邦线和没喝完的冰红茶。学长说每周训练要刷题到晚上十一点,新生想进队先做选拔题。
我看着黑板上的算法题,心里没有以前那种“我肯定行”的轻松。
但也没有怕。
晚上回宿舍,王浩请我喝了蜜雪冰城,当然是用我的钱。他一边吸柠檬水一边刷手机,忽然“咦”了一声。
“陈木,你下午是不是说那个二手平台有问题?”
我正在整理今天的字段笔记:“怎么?”
他把手机递过来。
屏幕上是一个新生二手群,群公告写着“东江大学内部学长学姐闲置教材、电动车、宿舍神器转让”。一个昵称叫“周师兄靠谱二手”的人正在群里发消息:
“新生电动车名额有限,先付两百订金锁车,走平台太慢,微信直接转。”
我盯着那行字,后背慢慢凉了。
同一时间,林疏影的微信也弹了出来。
她只发来一句话。
“你今天提到的平台外导流,可能已经进新生群了。明早有空吗?”
我看着手机屏幕,宿舍窗外的蝉声一阵高过一阵。
那张赔偿单还没落下来,新的麻烦已经敲开了门。