“那是因为你需求写得好。”
苏念念没说话,低头合上了电脑。
灯光从侧面照过来,睫毛在她脸上投下一小片阴影。
“一周后你给我看原型,我帮你做用户测试。”她说。
“你用什么身份做?你还在公司上班呢。”
苏念念端起酸梅汤喝了一口,视线落在窗外。
“当作朋友帮忙。”她过了两秒才说,“反正我自己的项目被人拿走了,闲着也是闲着。”
韩路一叫了买单,苏念念抢了一下没抢过,瞪了他一眼:“下次我请。”
“行,等BugKiller上线那天你请。”
“成交。”苏念念收好电脑,又看了他一眼,“对了,回去别又泡面对付,冰箱里多少放点东西。”
“我什么时候泡面对付了?”
“你大学四年有三年的午饭是泡面加火腿肠,别以为我不知道。”
“……那是因为懒,不是因为穷。”
“结果呢?现在也没改吧。”
韩路一想反驳,但发现自己昨天中午确实吃的泡面,他没说话。
苏念念笑了一下。
出了餐厅,夜风有点凉。
“你怎么回去?”韩路一问。
“打车。”苏念念掏出手机叫车,“你呢?”
“走路,十五分钟。”
“那你先走吧,别等我了。”
“不急。”韩路一靠在路灯杆上,“等你车来了我再走。”
苏念念看着手机屏幕,没抬头,风把她的长发吹到脸侧,她伸手别到耳后。
“韩路一。”
“嗯?”
她好像要说什么,但手机响了,车到了。
“没事。”苏念念拉开车门,回头冲他笑了一下,“回去早点睡,别又写到凌晨。”
“知道了,妈。”
“……滚。”
车门关上,车开走了。
韩路一站在原地看着尾灯消失在路口,然后往回走。
他打开视界。
街边的一切立刻有了数据浮层,公共垃圾桶底座的螺丝松了两颗,便利店的招牌有三个像素的色偏,对面人行道上一个跑步的中年男人左膝半月板有磨损。
整个世界像被掀开了一层皮,露出底下密密麻麻的代码。
韩路一关掉视界,继续走。
第十四章 二十三个Bug
一周。
韩路一关掉所有接单平台,手机调静音,冰箱塞满速冻水饺和罐装咖啡,一周只做一件事。
前两天最顺。框架和数据库是他的舒适区,闭着眼睛都能搭。第三天开始啃核心引擎,晚上卡住了,模式匹配逻辑怎么调都不对,盯着屏幕两个小时脑子越转越慢。他下楼在小区走了一圈,冷风一吹想通了:特征提取的粒度选错了。回来改了方案,通了。后面几天顺流直下,接口、串联、测试。视界升级以后他的身体好了很多,换成以前在鼎盛,连续高强度编码三天人就废了,现在不会。
核心中的核心是Bug模式数据库。韩路一把用视界积累的几百种Bug模式全部结构化,每种Bug长什么样、什么条件触发、影响多大、怎么修最优。别人训练AI用的是代码本身,他训练AI用的是代码在真实世界里的精确数据。
训练是最烧钱的环节。
韩路一在云平台上查了一圈价格,算下来光训练这一项就要好几万。他盯着报价页面看了半分钟,AI创业的第一道门槛,劝退九成独立开发者的那道门槛,现在摆在他面前了。
好在他有一个别人没有的优势:数据质量极高。别人需要十万条脏数据才能训练出基本能用的模型,他用视界标注过的三千条干净数据就能喂出来。数据量小,训练轮次就少,算力也成比例下降。
他选了折中方案:开源轻量模型做底座,竞价实例跑正式训练,做了断点续传防中断,最后花了四万出头。
五年积蓄加上离职补偿,四万不算伤筋动骨。
但四万只是一轮训练。后面要花多少,他不敢细算。
先把原型跑通再说。
第七天晚上,代码写完了。
光标停在最后一行的分号后面。韩路一的手离开键盘,十指交叉搁在脑后,盯着屏幕。
他忽然有点不敢跑测试。
这种感觉他太熟悉了,考试做完不敢翻答案、论文写完不敢查重、代码写完不敢编译、表白完的微信不敢看,越在意的东西越不敢验证。
他站起来,去厨房接了杯水,喝了一口,又倒掉了,走回来坐下。
把BugKiller的源代码丢进了BugKiller,用自己做的刀,切自己做的菜。
运行。
进度条开始走:12%...31%...
他发现自己在屏住呼吸。
47%...68%...89%...
进度条走完。
二十三个Bug。
屏幕上二十三条红色高亮。日均十二小时,视界辅助,身体巅峰。
二十三个。
他盯着那片红看了几秒,然后开了视界,扫了一遍同样的代码。
二十五个。
BugKiller比视界少了两个,他把两份结果拉到一起对了一遍,大部分重合。
一周,一个人,做出来的东西在他自己的代码上已经接近金手指的水平。
韩路一用视界确认修复路径,花两个小时把所有的Bug全部干掉。
然后让BugKiller重新扫了一遍。
屏幕上弹出一行绿色的字。
0 Issues Found.
他靠在椅背上,盯着那个零看了好一会儿。
把原型打包,发给了苏念念:“一周,没食言。”
五分钟后苏念念炸了。
“我试了!!!把我们组上周的一段代码丢进去扫了一下,找到了八个问题!!其中三个是我们已经知道的,另外五个是我们不知道的!!而且它给的影响评估特别直观,「该Bug在高并发场景下有约15%概率触发服务降级」,运营和产品也能看懂!!不只是给开发看的!!!”
“冷静。”
“我不冷静!市面上没有一款工具能做到「影响评估」这个层级!所有竞品都停在「找到Bug」这一步,你直接跳到了「找到Bug+告诉你后果+教你怎么修」!这不是优化!这简直是降维打击!是二相箔!”
“用户测试的事交给我。”苏念念最后发了一条,“我找几个做开发的朋友试一试,收集反馈。你继续迭代。”
“行。”
韩路一放下手机,翻出微信通讯录,找到顾司。
两人的聊天记录还停在上次她说“快闪大概率会走破产重组”,之后就没再联系过。
韩路一想了想,打了一行字:“顾律师,方便约个时间吗?有个新的法律咨询。”
晚上十一点多了,他不指望今晚有回复。
过了一会,顾司回复了:“什么方向?”
“软件著作权注册,可能还涉及商标。”
“明天下午两点来我办公室,新case按正常咨询费收。”
明天周六,韩路一看了一眼这条消息,晚上十一点秒回、周六还约客户,这人是不下班的吗?
韩路一回了个“好”。
顿了一下,又加了一句:“这次不是举报,我自己写了个软件。”
顾司过了几秒才回:“那更要趁早,明天见。”
第二天下午两点,博衡律师事务所。
周六的律所比上次来安静一些,走廊里大半的办公室都黑着灯。前台把他领到会议室,路过走廊的时候经过一间门没关严的办公室,里面桌上摆着三杯咖啡,两杯空了,第三杯喝了一半,窗台角落有一盆绿萝,叶子耷拉着,土干得发白,衣架上挂着两件备用衬衫,一黑一白。
门上的铭牌写着“顾司高级合伙人”。
这人住在办公室里吗?
顾司已经在会议室等着了,笔记本摊开在桌上。
“说。”
韩路一花了三分钟把BugKiller介绍了一遍,做什么、怎么做、数据从哪来、现在到什么阶段。
顾司听完没评价,直接进入法律盘问。
“软件著作权注册了吗?”
“没有。”
“代码用到前东家的IP了吗?”
“没有。”
“商标查过吗?”
“没有。”
连续三个“没有”,顾司的笔顿了一下,抬头看了他一眼。
“你倒是什么都没做。”
“所以才来找你。”
顾司没接这句话,低头在本子上快速写了几行。
“著作权我让助理今天就开始走流程,商标查重同步做,如果没有撞车的一周内提交。”她写完一页翻过去,“你的代码仓库在哪个平台?”