第四十五章 深夜食堂
半结构化方案跑通之后,团队像换了一台发动机。
陈一鸣把v0.1原型拆开重写了一遍,前端从简陋的白底黑字变成了带进度条的分步引导界面,每个问题下面的按钮都配了图标和颜色区分。他在群里发了新版截图,附带一句话:"UI改了,你们别再说丑了。"
方小满回:"嗯……还是丑。"
陈一鸣:"你来。"
方小满:"我不会。"
陈一鸣:"那闭嘴。"
苏雨晴在两人吵完之后默默发了一份文档,标题是《半结构化输入问题库v1.2》。四百二十七条商户原话被她拆成了六个模块,每个模块下面的选项全部用商户原话改写,没有一个技术术语。林知行翻到"定价参考"模块,发现一个选项写着"比隔壁便宜一点"——来自苏雨晴在五金店蹲点时听到的一句话。
他在群里打字:"问题库没问题,可以开始做了。"
陈一鸣:"收到。"
苏雨晴:"收到。"
方小满:"收到。所以我是干啥的?"
林知行:"你去联络商户,看谁愿意第一个试。"
方小满:"行,这个我在行。"
全速开发的节奏比林知行预想的要快。
陈一鸣白天上课,晚上写代码,凌晨两点睡觉,早上七点起床。他给每个模块搭了独立的前端组件,后端用规则引擎统一处理选择结果。苏雨晴拉着五金店的叔叔远程测试了一遍,叔叔选错了三次,她把这些反馈记录下来,改了十一处措辞。林知行在做决策日志的设计,把排课系统的解释层逻辑移植过来。
四个人各干各的,群里的消息从早上八点持续到晚上十一点。
那几天,方小满的状态和其他三个人不太一样。
他依然在群里活跃,依然接话、开玩笑、催进度。但林知行注意到一个细节:方小满回复消息的速度变慢了。以前他在群里基本秒回,现在有时候隔了半小时才冒出来一条"嗯"或者"收到"。
林知行以为他在忙联络商户的事,没多想。
方小满的专升本结果是在一个周三的下午出来的。
那天林知行在宿舍写代码,陈一鸣在实验室调试服务器,苏雨晴在外面跑商户。方小满从外面回来,推门的时候表情和平时没区别——笑嘻嘻的,手里拎着两瓶水。
"渴不渴?"他把一瓶水放在林知行桌上。
"谢了。"林知行接过来,没抬头。
方小满在自己桌前坐下来,拧开瓶盖喝了一口,然后把手机放在桌上,屏幕朝下。
过了大概两分钟,他说:"专升本出结果了。"
林知行的手指停在键盘上。
"差三分。"方小满说,语气很平,像在说今天食堂的菜涨了三块钱。"英语差三分。"
林知行转过头看他。
方小满在笑。是那种他惯常的笑,嘴角上扬,眼睛眯起来,看起来什么事都没有。
"没事,"他说,"本来也没抱太大希望。英语那玩意儿,我底子太差了。"
他说完又喝了一口水,拧上瓶盖,把手机揣进口袋,站起来往阳台走。
"我去抽根烟。"
林知行没说话。
方小满不抽烟。他们住了快三年,偶尔有人递烟,他都是摆手拒绝。
阳台的玻璃门关上了。林知行从椅子上侧过身,透过门上的磨砂玻璃看到一个模糊的影子,蹲在角落里。
他转回来,盯着屏幕上的代码。
代码一行也写不进去。
方小满在阳台上待了一个多小时。
林知行中间起来倒了两次水,经过阳台门口时放慢了脚步。磨砂玻璃后面的影子没怎么动过,偶尔有烟头的红点亮一下。第二次经过的时候,他闻到了浓重的烟味。
他回到座位上,把笔记本电脑合上。
想了想,又打开。
想了想,又合上。
他拿起手机,给方小满发了一条消息:"饿不饿?"
过了十分钟,方小满回了一个字:"嗯。"
林知行:"去吃面?"
方小满:"行。"
林知行站起来,走到阳台门口,推开玻璃门。
方小满蹲在角落里,面前的地上有七八个烟头,旁边还有半包烟,是那种五块钱一包的白沙。他的手指被烟熏得发黄,眼睛有点红,但表情还是笑嘻嘻的。
"走吧。"林知行说。
方小满站起来,膝盖咔嚓响了一声。他把半包烟和打火机揣进裤兜,跟着林知行出了门。
两人谁都没提专升本的事。
学校后门出去左拐,三百米,有一家深夜食堂。苍蝇馆子,六张桌子,老板是个五十多岁的胖大叔,围裙上全是油渍。白天不开门,晚上九点才营业,一直开到凌晨三点。
林知行和方小满到的时候是晚上八点半,店刚开。
"来两碗牛肉面。"林知行对老板说。
"大碗小碗?"
"大碗。加蛋。"
老板看了他们一眼,没多问,转身去了后厨。
两人坐在靠墙的那张桌子旁。桌面是不锈钢的,擦得不太干净,有几圈水渍。头顶的风扇转得很慢,发出嘎吱嘎吱的声响。
方小满坐在对面,两只手插在口袋里,靠在椅背上,看着天花板。
林知行看着桌面。
周围没有别的客人。后厨传来锅铲翻炒的声音和水烧开的咕噜声。风扇继续嘎吱嘎吱。
这种不是尴尬的安静。林知行以前在很多场合经历过尴尬的安静——面试的时候、被老师点名的时候、和不认识的人坐电梯的时候。那种安静里有一种张力,像绷紧的弦。
现在这种安静不一样。它不需要被打破。
两碗面端上来了。大碗,加蛋,牛肉铺了半碗,汤上面飘着一层红油和葱花。热气腾起来,模糊了对面那张脸。
方小满拿起筷子,先夹了一口面。
林知行也拿起筷子。
两人吃面的速度都不快。方小满平时吃饭很快,三口两口就扒完一碗,今天他一小口一小口地吸,偶尔停下来喝一口汤。
林知行吃得更慢。他其实不太饿,但他知道方小满需要有人陪他坐在这里。
吃到一半的时候,方小满忽然抬起头,看着林知行碗里的鸡蛋。
"你那个蛋,蛋黄是生的还是熟的?"
"熟的。"
"我的也是。"方小满又低头吃了一口面,"我不喜欢溏心蛋。看着怪恶心的。"
"我知道。"
"你知道?"
"你大一的时候说过。食堂的番茄炒蛋你说太嫩了,像生的。"
方小满愣了一下,然后笑了。"你连这个都记得。"
"我记性好。"
"你是记仇。"
"记仇用另一个文件存。"
方小满又笑了一声,这次比刚才真了一点。
然后他又低下头吃面,没再说话。
面快吃完的时候,碗底只剩下汤和几根碎面。方小满把碗端起来,把汤喝了一大口,放下碗,用袖子擦了擦嘴。
"知行。"
"嗯。"
"你要是赢了这个比赛,"方小满说,"替我也赢了。"
他说这句话的时候语气很轻,像在说一件不重要的事。但林知行听出了重量。这不是随口一说,是方小满想了很久才说出口的。
林知行放下筷子,看着他。
"你本来就是团队的人。"他说。
方小满笑了一下。是那种他熟悉的自嘲的笑——嘴角扯起来,但眼睛里没什么光。
"我是团队的什么?"他说,"我又不会写代码。"
这句话林知行听过很多次。方小满说这话的时候总是带着玩笑的语气,好像真的不在意。但今天他听出了不一样的东西。以前方小满说"我又不会写代码",重点在"不会";今天这句话的重点在"什么"。
他在问:我在你这里,到底算什么?
林知行想了想。
他不是那种能说出漂亮话的人。从大一到现在,他和方小满之间的默契都建立在不说话的基础上——方小满帮他打饭,他帮方小满改作业,方小满替他怼嘲笑他的人,他在方小满喝醉的时候把他扛回宿舍。这些事他们从来没说过谢。
但今天,方小满在问"我是团队的什么"。
这次需要一个回答。
"你是团队的嘴。"林知行说。
方小满抬头看他。
"没有你,我们连张老板都见不到。"林知行说,"排课系统的活是你拉的,商户群是你建的,团队里每一个人都是你找来的。你不是不会写代码,你是不用写代码。"
他顿了一下。
"你能做我们谁都做不了的事。"
方小满没说话,但他的表情变了。
自嘲的笑还挂在嘴角,但底下有另一种东西在往上浮。是一种被确认的感觉。像一个人觉得自己是多余的,忽然有人说你不多余,你刚好是缺的那块。
他的笑变了味道。
从自嘲变成了真的笑。不是大笑,是那种嘴角带着弧度、眼睛里有了一点光的笑。
"你什么时候学会说人话了?"方小满说。
"跟你学的。"
方小满噗嗤一声,差点把嘴里的汤喷出来。他用手背擦了擦嘴角,摇了摇头。
"行吧。"他说,"我是团队的嘴。那你是什么?"
"我是团队的脑子。"
"陈一鸣呢?"
"陈一鸣是手。"
"苏雨晴呢?"
林知行想了想:"苏雨晴是耳朵。"
方小满皱眉:"为什么是耳朵?"
"她是唯一一个愿意听商户说话的人。"
方小满想了想,点了点头。
"脑子,手,耳朵,嘴。"他掰着手指头数,"就四个人,凑了半个人。"
"够了。"林知行说。
"够什么?对手是清华的。"
"对手是清华的,但我们有清华没有的东西。"
"什么?"
"你。"
方小满又愣了一下。然后他伸出手,拍了一下林知行的肩膀。力气不大,但很实在。
"行。"他说,"那我这个嘴,明天就去给你找几个商户。"
"你不是在找吗?"
"还没开始。之前一直在等你们把东西做出来。现在东西能用了,该我上了。"
方小满把最后一口汤喝完,把碗放在桌上,站起来。
"走吧,回去睡觉。"
林知行也站起来。他走到柜台前面,掏出手机扫码付了账。两碗大碗牛肉面加蛋,二十八块。
出了店门,晚上的风凉了一些。学校后门那条路没有路灯,只有远处食堂招牌的光映在地面上。
两人走在路上,影子被拉得很长。
方小满走在他右边,手插在裤兜里,步子比平时慢一点。
走了大概一百米,方小满忽然说:"知行。"
"嗯。"
"你记不记得大一的时候,你说过一句话?"
"哪句?"
"你说,人生就是一个算法题,只要找到最优解,就能过好。"
林知行记得。那是他刚接触算法思维的时候,跟方小满在操场上聊天,他随口说的。
"现在还这么觉得吗?"方小满问。
林知行想了想。
"不完全是了。"他说。
"为什么?"
"因为你不是一道题。"林知行说,"专升本也不是一道题。它没有最优解。"
方小满没接话。
两人继续走。快到宿舍楼下的时候,方小满拍了拍林知行的肩膀,这次力气比刚才大了一些。
"回去吧。"他说,"明天我干正事。"
他先一步走进了楼道。
林知行站在楼下,看着他的背影消失在楼梯拐角。
他掏出手机,看了看时间。十点十七分。
他在手机备忘录里打了一行字:方小满——专升本差三分——英语。
然后他又删掉了。
不需要记。这件事他忘不了。
第二天早上,林知行醒的时候方小满已经不在床上了。
他看了一眼手机,群里没有新消息。时间是早上七点四十。
他以为方小满去食堂了,没在意,翻了个身继续睡。
九点的时候,他在群里发了一条消息:"今天继续做决策日志模块。陈一鸣,你的规则引擎接口文档发我一下。"
陈一鸣秒回:"邮箱发了。"
苏雨晴:"我在五金店,下午回来。"
方小满没回。
十点的时候,方小满在群里发了一条消息。不是回复林知行的,是一条新消息。
"各位,我刚才在几个本地商户群里发了个消息。"
下面是一张截图。
截图里是一个微信群的消息,发信人是方小满,消息内容是:
"各位老板好!我是之前帮张氏教育做排课系统的那个小林AI工作室的方小满。我们团队做了一个AI小工具,能帮店里管库存、算账、排班。现在开放免费试用,一个月见效,不满意不要钱。感兴趣的老板扣1,我私聊您。"
林知行看着这张截图。
"你在哪些群发了?"
方小满:"本地中小商户联盟群、学校周边美食群、五金建材交流群、还有一个什么便利店老板群。"
"这些群你怎么进的?"
方小满发了一个微笑的表情:"这几年帮张老板跑腿加的。还有我爸的一些老朋友。还有一些是我自己在网上找的。"
陈一鸣:"你加了多少个商户群?"
方小满:"十七个。"
苏雨晴:"……"
林知行看着屏幕,想说什么,又不知道该说什么。
他想起昨晚方小满说的那句话——"明天我干正事。"
这个人说到做到。
方小满继续发消息:"我已经私聊了三十多个老板,介绍了我们的工具。有几个说先看看,有几个直接问怎么用。我让他们发了店铺类型和主要需求,回头整理成表给你们。"
林知行打字:"你什么时候开始弄的?"
方小满:"早上六点。"
陈一鸣:"六点?你不是最晚起的那个吗?"
方小满:"睡不着。"
群里安静了三秒。
苏雨晴发了一条消息:"方哥,我敬你一杯。"
方小满:"大早上喝什么。"
苏雨晴:"不是酒。是敬意。"
方小满没回。但林知行注意到,他的头像旁边出现了"对方正在输入"的提示,闪了两下,消失了。
过了一会儿,方小满发了一条消息:"行了别煽情了。我继续去聊了。有结果了发你们。"
两天后,方小满发来了一份表格。
Excel文件,三列:商户名称、店铺类型、主要需求。
十七行。
十七家商户。奶茶店、五金店、小餐馆、水果店、便利店、文具店、打印店、小吃摊、卤味店、杂货铺。
林知行打开表格,从头看到尾。
每一家商户后面都附了方小满的备注——"这个老板人不错,但疑心重,要多聊几次"、"这家店两个合伙人,意见不一致,先对接其中一个"、"这个老板娘说普通话带口音,苏雨晴你去的时候慢点说"。
这些备注不来自任何算法,来自方小满两天之内打了四十多个电话、跑了六家店、喝了十二杯茶的成果。
他把表格发到群里。
陈一鸣:"十七家。"
苏雨晴:"这么多?"
方小满:"嫌多?那我退几家?"
林知行:"不嫌多。"
他看着这份表格,忽然意识到一件事。
他们有了真实的测试用户。不是模拟数据,不是实验室环境,是十七个真实的、愿意花时间试一试他们这个半成品的商户。
代表作不是代码,不是比赛评分。代表作是有人用了你的东西之后说"这个好"。十七家商户,十七个"我愿意试试"。这就是起点。
他在群里打字:"方小满。"
方小满:"咋了?"
林知行盯着屏幕,手指在键盘上停了几秒。
他想说谢谢,但这个词在他们之间从来不存在。方小满帮他拉第一个客户的时候他没说过,帮他扛回宿舍的时候没说过,帮他怼嘲笑他的人的时候也没说过。
他说:"你不让我花钱,你就花脸。"
方小满回了一个字:"呸。"
然后他又发了一条消息:"这叫口碑营销。你一个搞技术的不懂。"
林知行看着屏幕,笑了。
方小满:"明天开始部署吧?我约了第一家店,奶茶店,后天下午。"
林知行:"好。"
陈一鸣:"我把代码再检查一遍。"
苏雨晴:"我把问题库再过一遍。"
方小满:"那我继续去花脸了。"
林知行关掉手机,靠在椅背上。
窗外的天很蓝,是那种秋天特有的蓝,高远、干净。楼下有拍篮球的声音传上来。
他想起深夜食堂里,方小满说的那句话——"替我也赢了"。
他不知道这个比赛最后能不能赢。但他知道,从今天开始,他们不只是在做一个比赛作品了。
他们在做一个真的东西。一个有人愿意试的东西。
(本章完)