《我能Debug现实世界》 第一章 你被优化了 208会议室很小。灯光很亮。 hrbp张薇坐在桌子对面,面前摆著一份列印好的协议和一瓶没开的矿泉水。 “路一,先喝水。” 韩路一没拿水。 张薇清了清嗓子:“公司最近在做组织架构调整,你这边的岗位需要优化……” 后面的话韩路一没怎么听。 无非就是那些:感谢你的贡献、公司的决定、n+1、竞业协议、祝你前程似锦。 每一句都是標准话术,每一个字都不带温度。 “补偿方案在这里,你看一下。”张薇把协议推过来。 韩路一翻了翻。数字、条款、签名栏。 五年。 校招进来的p5,一路卷到p7。多少次周末赶代码,多少次通宵盯著新版本上线。 一张纸就结束了。 签了。站起来往外走。 走廊很长,白色的灯管在头顶排成一排。 走出208会议室大概第五步的时候,他突然开始头痛。 不是普通的头痛。 是那种从太阳穴开始、像有人拿锥子往里钻的剧痛。韩路一脚步一个趔趄,右手撑住了墙壁。 他的视野里出现了裂纹。 不是眼睛的问题,是整个世界出现了裂纹。就像一块屏幕被用力按了一下,液晶面板底下的像素点全部扭曲了。 然后世界破碎了。 又重组了。 整个走廊都变了。 墙壁、天花板、脚下的地砖,所有东西的表面都浮现出一层半透明的光。像是有人在现实世界上覆盖了一层ar图层。无数行代码和数据以极快的速度滚动著。 韩路一死死扶著墙,大口喘著气。 视野正中央,一个框体弹了出来。 【现实代码视界已激活】 【lv.1|精力:100/100】 “……什么?” 韩路一以为自己出了幻觉。被裁员裁出精神问题了? 但那个面板就悬在他视野中央,清清楚楚。他试著伸手去碰,但手穿过了光影,什么也没摸到。 他眨了几下眼。面板还在。 右上角的数字在慢慢跳动:99……98……97…… 精力值在往下掉。 这时候208会议室的门开了。张薇抱著一叠文件走出来,差点撞到靠墙站著的韩路一。 “哎,路一?没事吧?你脸色不太好……” 她话没说完,韩路一抬头看到张薇的头顶浮著一个半透明的数据面板。 【张薇|29岁|hrbp(p6)】 就这么一行字,悬在她头顶大概十公分的位置,半透明的,像游戏里的名牌。 当韩路一把注意力集中到那里的时候,像是有人点开了一个摺叠菜单,更多信息被打开了—— 【当前任务:完成7人裁员面谈(已完成3/7)】 【情绪:疲惫(隱藏:心虚)】 【warning:补偿方案存在2个bug,1工龄计算遗漏2021年7-9月实习转正衔接期2加班补偿基数误用税前工资而非应发工资|差额¥47,832】 韩路一盯著那个数字看了两秒。 四万七千八百三十二块。 忽然鼻子里一热,有什么东西流下来了。他抬手一抹,指尖是红色的。鼻血。 精力值:92……91…… 张薇嚇了一跳:“你流鼻血了!要不要去医务室?” “不用。”韩路一用手背擦了一下鼻子,“张姐,等一下。” 他把刚才签好的协议从口袋里掏出来。 “补偿方案我再看一眼。” 张薇愣了一下:“你都签了啊……” 韩路一的声音很平静:“劳动法第四十七条,工作年限计算有问题。我2021年7月实习转正,系统记录的入职日期是10月,中间三个月的衔接期你们没算。” 张薇脸上的表情微妙地变了一下。 韩路一继续说:“另外,加班补偿的基数你们用的是税前工资,但按照劳动合同法实施条例,应该用应发工资,包含绩效和补贴部分。这两个加起来,差了不少。” 张薇没接话,但她手里的文件夹握紧了一点。 韩路一看著她头顶的面板。 【情绪变化:疲惫→紧张】 韩路一把协议放在张薇面前:“数字不对,咱们重新算一下,按法条来就行。” 张薇沉默了几秒,然后说:“你等一下,我核实一下。” 她转身回了会议室,关上门。 韩路一靠在走廊的墙壁上,看著视野里跳动的数字和飘浮的代码流。精力值还在掉:85……84…… 太阳穴还在一抽一抽地疼。但他的嘴角翘了一下。 五分钟后,张薇出来了。表情有点僵硬。 “路一,你说的情况……確实存在。我跟薪酬组確认了,补偿金额需要调整。” 她递过来一份新列印的协议,手指点了一下最后的数字。 比原来多了四万七千八百三十二块。 韩路一拿起笔签了字。 “谢谢张姐。” 他把新协议折好放进口袋。转身的时候,看到走廊尽头站著一个人。 是陈博文。他端著一杯咖啡靠在墙边,表情似笑非笑。 以前见到这张脸,韩路一心里只有一个字:忍。 陈博文是韩路一的直属领导,海归硕士,空降p8。两个月前,他拿韩路一写了六个月的推荐系统做了场漂亮的匯报,转化率提升37%,留存涨了5.2个百分点。代码仓库里两千三百多次提交,百分之九十一来自韩路一的帐號。但ppt署名“陈博文团队”。台下的vp王志远听得频频点头。 年终述职,陈博文拿了部门唯一的3.75。韩路一被评3.25,反馈就五个字:配合度不够。 然后项目被接手,人被踢去外包组,最后hr下场收人。一条龙。 韩路一看向他。 陈博文头顶的数据面板亮了起来。 【陈博文|33岁|算法部总监(p8)】 【情绪:轻蔑(隱藏:恐惧)】 【当前负责项目:推荐系统v3.2|上线后转化率持续下降(-0.3%/日)|团队未定位原因】 【warning:该对象存在3个严重bug(当前等级不足)】 “路一,辛苦你了,好好休息一阵,”陈博文的表情恰到好处地遗憾,“有什么需要帮忙的,跟我说。” 韩路一笑了笑,是那种阳光大男孩標配的笑容。 他把工牌从脖子上取下来,放在旁边的前台桌上。 “对了,”他像是想起什么似的,“转化率是不是在掉?” 陈博文端咖啡的手顿了一下。 韩路一掏出手机看了一眼时间。 “上线后应该每天掉零点几,你最近拉周线看过没?” 陈博文脸上的笑容不见了。 “你怎么知道的?” “我写了六个月。”韩路一把手机放回兜里,“陈哥,加油。” “韩路一!你什么意思!?” 韩路一没理他,摆摆手走了。 这次他没回头。 走出鼎盛集团大楼的旋转门,二月的冷风扑面而来。他站在台阶上,深吸了一口气。 精力值:61/100。 头还在疼。 鼻血干了以后上嘴唇痒痒的。 视野里依然飘著那些半透明的数据和代码,路上每个行人的头顶都顶著一块小小的面板。他试著集中注意力想要关掉这东西—— 面板消失了。 世界恢復了正常。 韩路一伸手摸了摸口袋里的新协议。 被裁了。 多拿了將近五万块。 眼睛好像出了什么大问题。 他把这三件事在脑子里排列了一下,发现自己居然想笑。 然后他真的笑了。 站在二月的冷风里,一个刚被裁员的二十六岁程式设计师,鼻子下面还有干掉的血痂,对著灰濛濛的天空笑出了声。 路过的保安看了他一眼。 韩路一收住笑,拿出手机叫了一辆车。 打车软体弹出预估价格:38元。 但是他的脑子里想的是另外两个问题—— 精力值归零了会怎样? 陈博文那三个严重bug是什么? 手机震了一下。推送弹窗:《快闪科技完成b轮融资10亿,估值破百亿》。韩路一瞥了一眼,划掉了。 十个亿。跟他没关係。 第二章 这个世界,有Bug 计程车上,韩路一靠著后座闭眼假寐。 司机在前面骂骂咧咧地吐槽交通,导航的电子女声冷冰冰地说“前方五百米右转”。 到家了。 浦东老小区,六层楼梯房,他住五楼。没电梯,每天爬楼当健身。月租四千五,在海城算便宜的。 进屋鞋都没换,就打开了电脑。 程式设计师遇到了未知的新功能,第一反应只有一个。 测试。 新建文档,文件名:rcv_test_log_v_0_1.md 开启视界。 世界再次变了。 房间里每个物体的表面都浮现出淡淡的数据光层。墙壁有建筑信息,桌子有材质数据,就连角落里那袋没扔的外卖垃圾都標著【有机废弃物|存放时间:3天|建议:立即处理】。 韩路一瞥了一眼那个提示,默默把垃圾袋拎去了门口。 然后回来坐下,开始记录。 精力值:67/100。比出公司大门的时候恢復了6点,大约每分钟0.15。 他在文档里敲下第一行数据,接著花了十来分钟测试视界的被动和主动两种模式,被动掛著每分钟耗1点,聚焦扫描跳到3-4点。 记住我们101看书网 基础参数记完,他把视界对准了电脑屏幕。 屏幕上还开著一个开源推荐系统,他业余时间在github上维护的,star两万多,好几家小公司拿去部署了。视界扫描了大约十秒钟,整个代码结构在他视野中展开。 bug標红,冗余代码標黄,优化空间標蓝。 韩路一皱了皱眉。 找bug、標红代码、提示边界条件,这不就是ai代码审查工具乾的活吗?cursor、copilot,哪个不能做?2026年了,这种功能烂大街了。就算视界的准確率更高、速度更快,本质上也只是一个增强版的静態分析,算不上质变。 但每一个红色標记旁边,还悬浮著一层东西。 韩路一凑近屏幕,逐字看清了。 【bug|推荐权重溢出】 【触发场景:用户连续刷新>50次时权重累加溢出】 【影响范围:日均触发约12万次|涉及用户约8.3万人】 【业务损失:推荐精度下降,聚合估损≈日均62,000元】 韩路一瞬间坐直了。 日均损失六万二。 这不是代码层面的信息。代码里写的是一个数据溢出,任何ai分析工具都能找出来。但“日均触发12万次”“影响8.3万用户”“每天亏六万二”,这些数据从哪来的? 这是开源项目,他自己都不知道有谁部署了这套系统。 这是现实世界的运行数据。 而视界能看到。 他正要关掉扫描,手机闪出一行金色提示—— 【warning:外部实体异常,快闪科技|检测到重大bug:核心运营数据严重异常|修復可获得大量经验|详情需深度扫描】 韩路一愣住了。 快闪科技。刚才打车的时候手机推送的那条,b轮融资十个亿,估值破百亿的那个快闪科技。 十个亿的公司,核心数据有重大bug? 精力值哗哗往下掉。他赶紧关闭视界,在文档里写下: “代码扫描:不只是bug定位,能看到bug在真实世界中的影响。实战价值s级。” 又加了一行:“快闪科技,核心运营数据严重异常。需要深度扫描。大量经验。” 他盯著最后四个字看了几秒。 大量经验。 他关上电脑,靠在椅子上。 窗外的天已经快黑了。二月的海城日落早,才五点出头就暗下来了。 肚子叫了一声。 韩路一这才想起来,自己今天只吃了一顿早饭。 他起身下楼买饭。 走到二楼楼道拐角,听到下面传来动静。 有人在上楼,走得很慢。脚步声沉闷,中间夹著一个小孩子的哼唧声。 韩路一往下走了几步,看到了。 一个女人左手拎著两大袋超市购物袋,右手抱著一个小女孩,正吃力地往上爬。购物袋太重,塑料提手勒得她手指发白。怀里的小女孩大概四五岁的样子,脸上掛著没干的泪痕,脑袋靠在女人肩窝里。 韩路一迎面下来的时候,女人抬起头看了他一眼。 视界还开著。 面板自动弹了出来。 【林晚晴|30岁|自由插画师】 只有这么一行。简洁的基础名牌,悬在她头顶。 但他的目光多停了一秒,面板下方自动展开了更多信息—— 【情绪:疲惫(隱藏:焦虑)】 【warning:该对象存在1个待修復bug,家庭纠纷(详情需lv.2解锁)】 韩路一来不及多看,已经本能地伸出手:“我帮你拎。” 林晚晴愣了一下。 她没化妆,额头上有一道浅浅的铅笔痕,大概是画画的时候蹭上去的,自己还不知道。米色薄羽绒服,头髮隨意扎成马尾。 “啊……谢谢。”她把购物袋递过来,声音里带著不太习惯被帮忙的拘谨。 韩路一接过来,挺沉的,两袋加起来估计有三十斤。米、食用油、一堆蔬菜水果,还有两盒儿童牛奶。 两个人一前一后上楼。 “你是……502的吧?”林晚晴先开口了,有点不確定的语气。 韩路一点了点头。 “我501。”她笑了一下,“搬来两年了,好像第一次说话。” 韩路一確实一点印象都没有。以前每天早上六点出门,晚上十一二点到家,周末还经常去公司加班。別说邻居了,这栋楼的楼管叫什么他都不知道。 “我以前工作忙,不常在家。”他说。 “现在不忙了?” “现在……不太忙。” 林晚晴没追问。 到了五楼,两家门对门。韩路一把购物袋放在501门口。 这时候怀里的小女孩突然抬起头,瞪著一双圆溜溜的大眼睛看韩路一。 泪痕还没干,睫毛上掛著水珠,但她已经不哭了,神情里多了一种小孩子特有的好奇。 “大哥哥。”她突然说。 “嗯?” 小女孩歪著脑袋,认真地看了韩路一好几秒。 “你眼睛好亮。” 韩路一心里“咯噔”一下。 视界还开著。 他不动声色地关掉了视界。面板消失,代码流消退,世界恢復正常。 小女孩又看了他两秒,然后兴趣转移了,把脑袋重新埋回妈妈肩膀上。 林晚晴没注意到这个细节,腾出一只手摸钥匙开门。 “谢谢你啊……”她回过头来。 韩路一注意到她犹豫了一秒,大概是在想怎么称呼。 “我姓韩,韩路一。” “我叫林晚晴。这是我女儿,朵朵。” 林朵朵闷在妈妈肩膀上闷闷地说了句:“朵朵。”算是自我介绍了。 韩路一笑了一下:“朵朵你好。” 林晚晴又道了一次谢,进了门。 门关上的那一刻,韩路一站在走廊里,脑子里回放起刚才面板上那行黄色的警告。 【warning:该对象存在1个待修復bug家庭纠纷(详情需lv.2解锁)】 lv.2。 他想起文档里那行字:快闪科技,核心运营数据严重异常,修復可获得大量经验。 第三章 415%的谎言 等林晚晴关上门,韩路一又打开视界。 视野右上角的数据面板亮起来: 【lv.1|精力:53/100】 【经验值:12/200】 12点经验。200点升级。 差的有点远。 他关掉视界,下楼买了份黄燜鸡米饭,边吃边想事情。 晚上九点,他洗了澡,躺在床上。 今天的经歷很魔幻,脑子太乱,先睡,让后台跑一遍gc。 闹钟设在早上七点。 第二天。 韩路一是被阳光晃醒的,比闹钟还早了十分钟。 睁开眼,开视界。 【精力值:100/100】 洗漱完毕,泡了一杯速溶咖啡,坐到电脑前。 打开某个自由开发者接单平台。 以前他偶尔会在上面接点私活,赚个零花钱。但那时候是纯凭技术和经验筛选项目,效率一般。 现在不一样了。 视界开启。 平台页面上的每一条外包需求旁边,都多了一层数据面板。 第一条:某社交app的数据接口开发。 【甲方信誉评分:31/100 |实际预算:低於標价60%|隱藏需求:要求免费维护半年|赖帐概率:67%】 韩路一嘴角抽了一下。赖帐概率百分之六十七。之前就接过这种单子,验收完了对方消失,尾款永远在路上。 第二条:某教育公司的ai课程推荐算法。 【甲方信誉评分:88/100 |实际预算:与標价一致|隱藏需求:无|赖帐概率:1%】 这不就是开全图吗? 他挑了几个高信誉、低赖帐率的单子,开始干活。 视界的代码扫描功能在这时候展现出了恐怖的效率。 第一个单子,电商后台优化,打开代码,扫描三秒,所有性能瓶颈和潜在bug以高亮色块的形式浮现出来。別人要花一天理解的代码架构,他看一眼就全明白了。 四十分钟,搞定。提交修復报告的时候,甲方过了好一会儿才回:这么快?你们是多少人的团队啊? 第二个单子,ai推荐算法。稍微复杂一点,但这是他的老本行了。一个小时完成。 第三个单子,资料库迁移脚本。最简单的那种。半小时。 三个单子,一上午。 平台帐户余额提示:+8,200元。 以前在鼎盛的时候,税后月薪五万出头。一个工作日算两千多块。 半天赚了差不多四天的钱。 韩路一靠在椅子背上,看著那个数字。 在鼎盛卷了五年,没有过这种手感。 精力值掉到了41。代码扫描的消耗不低,三个单子加起来用了將近60点。但钱已经到帐了,剩下的时间可以关掉视界慢慢恢復。 他关掉视界,伸了个懒腰。关掉接单平台,打开了瀏览器。 昨天视界扫到的那条提示一直在他脑子里,快闪科技,核心运营数据严重异常,修復可获得大量经验。 他搜了一下快闪科技,打开官网,开了视界。 就一秒。 视野里“啪”地炸开一片刺目的红。 不是普通的数据面板。是整个页面都被一层红色覆盖了,像是有人用红笔把整张纸都划满了叉。 一行巨大的警告浮现在正中央。 【严重异常!!!】 【该公司公开dau数据与系统推算真实数据偏差率> 400%】 【数据造假概率:99.7%】 【关联风险:用户隱私数据异常调用详情需主动扫描】 韩路一的手停在滑鼠上,没动。 四倍。dau造假四倍。十个亿融资,建在这种数据上。 精力值41。 不太够。 他拿起手机,在应用商店搜“快闪”。下载。安装。 41点精力撑不起一次深度扫描。他只能坐在椅子上等自己的脑子慢慢充电,像一台电量不足的手机插著充电线乾瞪眼。 他泡了第二杯速溶咖啡。刷了一个小时论坛。一个字都没看进去。 50。差不多了。 视界开启。 先扫快闪的公开资料,官网、应用商店页面、公开的融资新闻稿。 视界叠上去的数据图层把每一组公开数据都標註了“真实偏差”。 註册用户:官方宣称8000万。 【系统推算真实值:约2300万|偏差率:248%】 月活用户:官方宣称6000万。 【系统推算真实值:约1400万|偏差率:329%】 日活用户:官方宣称3500万。 【系统推算真实值:约680万|偏差率:415%】 每一组数据旁边都掛著红色標籤,像一棵长满了烂果子的树。 韩路一的目光在三行数字之间来回扫了两遍。 等等。 表面上看,8000万註册、3500万日活,日活率43%,完全合理。数据造得很漂亮,帐面上挑不出毛病。 但视界给出的真实註册只有2300万。 3500万日活,2300万真实註册。日活比真实用户总数还多出一千多万。 就算每个真实用户天天登录,也凑不出3500万。多出来的人从哪来的? 精力值在快速下降,50,46,42…… 韩路一带著这个问题加快了速度。他拿起手机,打开刚下载的快闪app,隨手刷了几条视频。 视界同时在扫描。 不是看界面。是看界面背后正在发生的事。 视界扫描了十五秒,弹出一连串红色警告。 【严重异常#1 | app实际读取:通讯录、简讯记录、gps轨跡|用户协议声明范围:基本设备信息|超范围採集】 【严重异常#2 |隱私数据传输方式:base64编码(明文等价)|安全標准要求:aes-256|当前等级:无防护】 base64。他们用base64来“加密”用户隱私数据。这不是加密,这是行为艺术。任何一个计算机专业的大一学生都能在三十秒內把这些数据全部还原成明文。 通讯录、简讯记录、gps轨跡,快闪在偷2300万用户的一切。 但偷数据不是终点。 视界继续深入,后端架构的轮廓像洋葱一样一层层剥开。一个隱藏极深的模块浮出水面。 【严重异常#3 |检测到“用户行为模擬引擎”|输入:真实用户隱私数据(行为模式/社交关係/地理轨跡)|输出:批量虚擬活跃帐户|当前虚擬帐户规模:约2800万】 韩路一的脊背一凉。 拼图的最后一块落进去了。 快闪偷来的隱私数据不只是在裸奔,它们是原料。2300万真实用户的行为模式被餵进模擬引擎,批量造出了2800万以假乱真的“活跃用户”。这些虚擬帐户会刷视频、点讚、留言,行为模式照搬真人,从外面几乎看不出破绽。 680万真人加上2800万幽灵,凑成了3500万日活的漂亮数字。 一条完美的造假链:偷数据→仿真人→充日活→骗融资。 十个亿,就是这么骗来的。 面板底部弹出一行红字: 【该bug集群影响范围:约2300万註册用户隱私数据|融资欺诈规模:b轮10亿】 精力值已经掉到了29。太阳穴开始抽痛,这大概是过度使用的前兆。韩路一强行关掉视界,靠在椅背上缓了好一会儿。 鼻子底下又热了一下。他抬手一摸,手指上又是红的。 “又来。” 他扯了张纸巾堵住鼻子,另一只手打开了一个新的文本文件,把刚才看到的所有信息凭记忆敲了进去。数据偏差、隱私窃取、行为模擬引擎、造假链条,分条列明。 这些信息的衝击力太大了,想忘都忘不掉。 全部记完之后,他看著这份文件沉默了一会儿。 但这份东西不能用。来源没法解释。 他需要一条乾净的证据链,每一步都经得起追问。 精力值见底了,但接下来的活儿不需要视界。韩路一关掉文本文件,打开了终端。 先做apk逆向。快闪的安装包反编译后,资料库结构一览无余,用户id是自增主键,最大值停在2300万附近。官方宣称8000万註册,差了三倍多。 再写爬虫。一段脚本抓取快闪公开页面上“活跃用户”的行为数据,跑了半小时,结果出来了,大量帐號的点讚间隔、瀏览路径、活跃时段高度雷同,呈明显的机器生成特徵。 两份证据保存好。这才是能摆上檯面的东西。 一家b轮融了十个亿的公司。投资方是几家头部vc,快闪的ceo隔三差五上科技媒体的头条。上个月还在某行业峰会上做了主题演讲,讲的是“数据驱动的用户增长方法论”。 数据驱动。確实,造假也算一种驱动。 韩路一再次点进快闪官网的“关於我们”页面。 联合创始人兼cto:周明哲。 这张脸他见过。去年鼎盛年会,王志远那桌,坐他右手边的那个人。陈博文还过去敬了酒。 vp请外面的人来年会太常见了,他当时没在意。但现在这张脸出现在快闪的cto栏里,韩路一心里划了一个小小的问號。 韩路一面前摆著两条路。 第一条:当没看见。刪掉文件,卸载app,当作什么都没发现。安全、简单、没有任何风险。 第二条:把这些东西捅出去。 第一条路不用动脑子。第二条路有一百种死法。 快闪背后是十个亿的融资、头部vc的站台、二十人以上的法务团队。他有什么?一份不能说明来源的证据,一台笔记本电脑,和刚到帐的五万块赔偿金。 但如果不管—— 2300万人的隱私每天都在被榨乾,变成快闪造假的燃料。每多一天,就多一天的数据在裸奔。 韩路一堵著鼻子坐了五分钟。 然后他拿起手机,翻开微信,找到一个名叫“404寢室”的群聊。 群里最后一条消息停在三天前。马小飞发了张凌晨一点半的自拍照,然后说“需求又改了,甲方是我爹”。韩路一回了句“人寿保险买了吗”,再往下就没人说话了。 韩路一打了一行字:“晚上出来搓一顿。我请。有正事。” 发送。 窗外天已经黑了。手机屏幕的光映在他脸上。 一个刚失业的程式设计师,要去捅一家百亿估值的公司。 听起来像个笑话。 但2300万人里,看到真相的只有他。 第四章 堂吉訶德的衝锋 马小飞三秒內回覆:“???老韩你主动请客?谁死了?” 张浩然慢了两分钟:“下班后可以。老地方?” “老地方。” 老地方是大学城旁边一家叫“再来一串”的烧烤摊。 老板换了三任,烤串的味道换了三个风格,但404寢室的三个人每次聚会都来这儿。没什么特別的原因,纯粹是习惯。 晚上七点半,三个人坐在露天的塑料凳上,面前摆著六十串烤肉、一盆小龙虾和三瓶啤酒。 “先说正事。”马小飞举起啤酒瓶指著韩路一,“老韩,你被鼎盛优化了?” “嗯。前天的事。” “臥槽。”马小飞表情夸张到像在演小品,“你p7啊!你一个p7的算法工程师被优化了?鼎盛是疯了吗?” “陈博文把我的项目摘了,然后推动的优化。” “操他……”马小飞拍了一下桌子,小龙虾汤溅出来两滴,“这种人你不告他?” 张浩然在旁边默默剥虾,声音不大:“告不了。项目归属公司,署名权这个东西在大厂基本是灰色地带。” “那也太他妈欺负人了。” 韩路一笑了笑,喝了一口啤酒。他开了一秒视界,好奇两个兄弟的面板长什么样。 马小飞的面板弹出来了。 【马小飞| 26岁|职业:自媒体博主/自由摄影师】 【情绪:义愤(真实)】 【隱藏情绪:嫉妒(韩路一居然还是不禿)】 【核心焦虑:帐號涨粉瓶颈期】 【粉丝总量:4.7万|月收入:¥8,200】 韩路一差点没绷住。嫉妒他不禿。 再看张浩然。 【张浩然| 26岁|职业:某股份制银行信息技术部】 【情绪:担忧(为韩路一)】 【隱藏情绪:无(该对象情绪表里如一)】 【核心焦虑:月底房贷¥11,400】 韩路一关掉视界,笑著又喝了一口。 “不说我了。”他把话题引开,“小飞,你最近在追什么选题?” 马小飞来了精神,但不是那种兴奋的精神,是咬牙切齿的精神。 “你不说我还想说呢。快闪你知道吧?那个短视频app。” “知道。” “我被那帮孙子坑了。”马小飞把啤酒瓶往桌上一顿,“坑惨了。” 韩路一夹虾的手停了一下:“怎么回事?” “上个月我接了一单推广,一个护肤品牌找我在快闪上投信息流gg。品牌方出预算,我负责內容和投放。”马小飞越说脸越黑,“我跟你讲,我把这单当翻身仗来打的。自己贴了一万二的製作费,拍了三条视频,熬了半个月。” “然后呢?” “然后投上去,效果稀烂。快闪官方说月活八千万,按他们公布的流量模型,我那条gg至少应该有五十万曝光,结果实际只有八万。八万!转化率更离谱,品牌方预期的roi完全没达到。” 马小飞一口啤酒灌下去,声音有点哑了:“品牌方觉得是我內容做得烂,尾款两万块直接不付了。我找快闪客服投诉数据有问题,你猜人家怎么说?“投放效果受多种因素影响,建议优化內容质量。”” “尾款没追回来?”张浩然问。 “追个屁。品牌方说没达到kpi就是没达到,合同里白纸黑字写著。我总不能告诉人家“快闪数据注水所以效果差”吧?我拿什么证明?”马小飞搓了搓脸,“一万二製作费打水漂,两万尾款没了,三万二。我一个月才赚八千多。” 韩路一看著他的表情,感觉他都快吐血了。 “后来我不死心,又花了一个星期扒他们的公开数据。cpm、用户活跃曲线、gg填充率,全都对不上。”马小飞压低声音,“老韩我跟你说,他们的数据至少注了三倍水。但我没有技术能力去证明,只能从投放数据反推,不够硬。我要是发出去,快闪法务分分钟告我誹谤。” 实际上是四倍以上。 韩路一看了马小飞一眼。月收入八千二的人,亏了三万二。相当於四个月白干。 他没吭声。 张浩然在旁边开口了:“快闪b轮的领投方是星辰资本和云帆创投。这两家都不是小机构,尽调应该做过了。如果数据真有这么大的水分,投资方不可能看不出来。” “那就是投资方也被骗了唄。”马小飞说。 “或者投资方知道,但装不知道。”张浩然用筷子点了点桌面,“击鼓传花,只要能在下一轮之前把估值做上去,接盘的不是他们就行。” 韩路一想起下午在快闪团队页看到的那张脸,问了一句:“快闪的cto周明哲,你听说过吗?” 张浩然剥虾的手停了。“周明哲?”他皱了下眉,“这名字……等等,他是不是之前在鼎盛?” “嗯。前年年会我见过他,坐王志远那桌。” “对。”张浩然放下筷子,“他是王志远带出来的。2023年从鼎盛离职的,之前在王志远手底下干了三年技术。走的时候鼎盛內部还有人议论,说是王志远放自己人出去。” 马小飞在旁边听得两只眼睛越瞪越大:“等一下,快闪的cto是鼎盛vp的老部下?” “大厂的人出去创业太常见了,不一定有什么。”张浩然说。但他顿了一下,语气变得谨慎,“不过我上个月帮行里做合规审查的时候,扫到过快闪天使轮的一笔投资,走的壳公司。结构上像个人投资通道,不像正规机构行为。” 他没继续说。三个人都沉默了两秒。 韩路一喝了口啤酒。快闪的水,比他想的要深。 他看著张浩然。这人平时话不多,但看问题的角度总是很准。 “假设,”韩路一斟酌著用词,“假设有人拿到了快闪数据造假的硬证据,技术层面的那种。怎么处理比较稳妥?” 张浩然抬头看了他一眼。 “除非是竞对的那几个大公司,普通人要举报他们不是以卵击石吗?人家法务也不是吃素的……” 话没说完,马小飞停下来,也看了他一眼。 “老韩。”马小飞放下啤酒瓶,“你是不是知道点什么?” “我隨便假设。” “你这个隨便假设的表情可不太隨便。” 韩路一没接话,喝了口啤酒。 张浩然想了想,说:“如果真有硬证据,直接举报不是最优选择。快闪估值百亿,法务团队肯定有准备的。最稳妥的做法是走匿名渠道,找专业媒体。但在这之前——” 他从手机里翻出一张电子名片,推到韩路一面前。 “先找个靠谱的律师,搞清楚法律风险,然后再行动。” 名片上写著:顾司玥,海城博衡律师事务所,高级合伙人。 “你认识?”韩路一问。 “我们银行的外聘法律顾问之一。做网际网路和智慧財產权诉讼的,非常厉害。”张浩然说,“人有点冷,但专业能力没得说。” 韩路一把名片存了下来。 马小飞在旁边看看这个看看那个,嗅觉敏锐得像一条自媒体猎犬:“你们俩这什么眼神?到底怎么回事?老韩你是真的有料对不对?” “我真的是隨便假设。” “我信你是秦始皇。” 三个人又喝了一轮。话题从快闪聊到了各自的近况,马小飞的帐號卡在五万粉上不去,张浩然在银行做it无聊到想辞职但不敢,韩路一被裁了反倒是三个人里最淡定的。 “说真的老韩,你接下来打算干嘛?”马小飞问。 “先接点私活。”韩路一说的是实话,“然后看看有没有什么想做的。” “你这技术水平,出去创业分分钟的事。” “创业这东西不是光有技术就行的。” “行了行了,”马小飞站起来去结帐,“今天算我请。改天你发財了记得带上兄弟。” “不是说我请吗?” “你刚失业呢你请什么请。”马小飞把他摁回塑料凳上,“这种时候还跟我抢买单?给我省省吧老韩。” 韩路一笑了笑,没再爭。 —— 回家的路上下起了小雨。 海城二月的雨带著冷意,不大但黏人。韩路一没带伞,走到楼下的时候头髮已经湿了。 上到五楼。 楼道的声控灯不太灵,他拍了两下才亮。灯亮起来的时候,他看到501门口的台阶上坐著一个小小的身影。 林朵朵。 小女孩穿著一件粉色的家居服,脚上套著兔子拖鞋,抱著一只棉布玩偶坐在台阶上。听到动静抬起头,看到韩路一,脸上立刻绽开一个笑。 “大哥哥你又来啦!” 韩路一愣了一下:“朵朵?你怎么一个人坐这里?” “妈妈去拿快递了。朵朵不想一个人在家,就出来等。” “外面冷,你穿这么少在走廊坐著会感冒的。” “不冷。”她抱紧了棉布玩偶,像是在证明自己有取暖设备。 韩路一在她旁边蹲下来。小女孩的眼睛圆溜溜的,很亮,和昨天哭唧唧的样子完全不一样。 “大哥哥你头髮湿了。”林朵朵伸手摸了一下他的头髮。 “下雨了,没带伞。” “妈妈说下雨不打伞会变成落汤鸡。大哥哥你是不是落汤鸡?” “……对,我就是落汤鸡。” 聊了一会天,楼下传来急促的脚步声,有人在快速上楼。林晚晴抱著一个快递箱跑上来,看到走廊里的两个人,先是鬆了口气,然后脸上浮出一层不好意思。 “朵朵!我不是说了在家等吗?” “朵朵想出来等嘛……” “对不起小韩,又麻烦你了。”林晚晴把快递箱放下,把林朵朵从台阶上捞起来。 “没事,就两分钟。”韩路一站起来。 他开门进了自己屋,换了双拖鞋。走到客厅的时候,视界面板突然自己弹了一条提示。 他今天没有主动开视界,但这条提示像系统通知一样自己蹦出来的。 【完成微型辅助任务|经验值+2】 【当前经验值:14/200】 韩路一看著这条提示怔了两秒。 帮忙看了几分钟孩子,经验值加了2点。 在公司帮hr纠正补偿金错误,加了12点,那算是修復了一个中等级別的“规则bug”。现在帮邻居看了几分钟孩子,加了2点,辅助任务。 bug越大,修復的经验越多。 那个快闪的bug,2300万用户的隱私数据,造假400%,这个量级的bug如果参与修復了…… 韩路一坐到电脑前,打开了下午记录快闪问题的那个文本文件。 2300万人的隱私正在裸奔。这不是一个“要不要管”的问题。 是一个“怎么管才安全”的问题。 张浩然说得对,先找律师。 韩路一拿起手机,翻到张浩然发来的那张电子名片。 顾司玥。海城博衡律师事务所。 他看了看时间,晚上九点半。九点半打一个陌生律师的电话,正常人都觉得被骚扰。 他打开博衡律师事务所的官网,找到了在线预约页面,填了一个明天上午的諮询预约。 姓名:韩路一。 諮询方向:网际网路企业数据合规。 备註:涉及用户隱私安全的技术举报需要法律评估。 发送。 手机放到桌上的时候,他又看了一眼经验值面板。 14/200。 快闪这个bug,够大。希望修復了可以让他离升级更近一点。 但这不是他去管这件事的原因。 ——好吧,也不能说完全不是。 但至少不是唯一的原因。 韩路一把文本文件保存好,加了密。关上电脑,去洗了个澡。 明天有一个冷麵律师要见。 张浩然说她人有点冷。 有多冷,明天看看就知道了。 第五章 两千三百万分之一 博衡律师事务所在陆家嘴一栋写字楼的十九层。 韩路一站在大堂的楼层指示牌前,看了一眼手錶,上午十点差两分钟。他今天特意换了件乾净的衬衫,头髮也拢了拢。不是因为要见的人是女的,是因为这是一家开在陆家嘴的律所,穿著拖鞋进去怕被保安请出来。 电梯到十九楼,门开。 前台是全透明玻璃墙设计,黑胡桃木前台上摆著一枝白色马蹄莲。墙上掛著一排律师照片和执业资质,金色铭牌刻著“博衡律师事务所”。 “您好,请问有预约吗?” “韩路一,预约了十点的諮询,顾司玥律师。” 前台翻了一下电脑,点点头:“顾律师在会议室等您了,这边请。” 走过一段走廊。韩路一下意识地开了视界,隨即又关了。不著急,等见到正主再说。精力值100满的,今天是带够了弹药来的。 前台推开会议室的门。 “顾律师,您十点的客人到了。” 会议室不大,一张六人位的会议桌,窗外能看到半截陆家嘴的天际线。桌子一头坐著一个人。 黑色西装,白衬衫,扣子繫到最上面一颗。黑色长直发在脑后束成一个低马尾,几乎没有碎发。细框眼镜下面是一张线条分明的脸,很白,嘴唇抿成一条直线。 整个人像一份排版严谨的法律文书。 顾司玥从笔记本电脑后面抬起头,看了他一眼,站起来。没有伸手,没有笑容,只是微微点了一下头,整套动作加起来不超过两秒,然后重新坐下。 “请坐。” 两个字,礼仪挑不出毛病,但温度大概在零下。 韩路一坐下来。张浩然说“有点冷”,这叫有点? “顾律师,我——” “韩路一,前鼎盛集团算法工程师,p7,今年二月被裁员。諮询方向数据合规,备註写的技术举报。“她翻了一页本子,“你的公开背景我查过了。“ 韩路一眨了一下眼:“……效率挺高,我连自我介绍都省了。” “省了最好。諮询按小时收费。”顾司玥合上笔记本电脑,终於正眼看他,“说吧,什么情况。” 韩路一开了视界。 数据面板在顾司玥身上浮现。 【顾司玥| 28岁|海城博衡律师事务所高级合伙人】 【好感度:28/100】 【情绪:公事公办(隱藏:略微好奇)】 【评价:又一个程式设计师?】 【特殊標记:逻辑思维 s级】 又一个程式设计师。这五个字配上问號,信息量很大。说明找她諮询的程式设计师不少,而且她对这个群体的整体评价不太高。 好感度28。比陌生人高一点点,大概是“你按时到了而且穿了衬衫”的分数。 逻辑思维s级。 韩路一在心里记了一下。s级意味著什么他不完全確定,但这是他到目前为止见过的最高评级標籤。 他关掉视界。面对逻辑思维s级的人,说话不能绕弯子。 “我在一个公开渠道下载的app上,发现了一些数据异常。” “哪个app?” “快闪。” 顾司玥的表情没有任何变化,但她拿起了桌上的笔。 韩路一提前准备好了一份说辞。他不能暴露金手指,所以要把“视界扫描”包装成“技术分析”。好在他確实有技术能力支撑这个说法。 “我下载快闪的app后,出於职业习惯做了一些技术层面的观察。app运行时的网络请求行为和它在用户协议中声明的数据採集范围有明显不一致。” “具体说。” “三个方面。”韩路一竖起手指,“第一,app在后台持续向境外伺服器发送用户行为数据,用户协议里没有声明这个数据通道。第二,实际读取的权限范围远超声明,通讯录、简讯记录、gps轨跡,这些都在採集,但协议只声明了基本设备信息。第三,这些隱私数据的传输方式是base64编码。” “base64?”顾司玥抬起眼睛。 “对。明文等价。任何计算机专业的学生都能在三十秒內还原全部內容。这不叫加密,这叫裸奔。” 顾司玥把笔放下,靠在椅背上。她的表情还是那张冰面,但韩路一注意到她的坐姿从“应付諮询”变成了“认真听”。 “影响范围?” “快闪公开註册用户数约2300万。” “你说的这些,有没有留证据?” “我做了一份脱敏的行为分析记录。只涉及app公开行为,没有碰过任何后端代码或者伺服器。” “你確定?” “確定。我是通过观察app前端行为和网络请求得出的结论。所有操作都在合法范围內,下载公开app,观察它做了什么。这和用户正常使用没有本质区別。” 顾司玥看了他几秒。 那几秒钟让韩路一有一种被x光扫描的感觉。但他扛住了,表情平静。 “你的技术分析能力是够的。”顾司玥开口了,语气没有任何夸奖的意思,纯粹是在陈述事实,“但技术能力和法律安全是两回事。你知道快闪是什么体量的公司吗?” “b轮融资十个亿,估值百亿级別。” “对。一百亿。法务团队至少二十人,外聘律所不会少於三家。你如果实名举报,他们有一百种方法让你后悔。” 顾司玥把笔搁在本子上,手指交叉,看著他。 “我需要问你一个问题。” “请说。” “你跟快闪有劳动关係吗?” “没有。” “投资关係?竞业关係?商业纠纷?” “都没有。” “你不是快闪的员工,不是投资人,不是竞爭对手,甚至不是被快闪直接侵害过利益的当事人。”顾司玥的语速没有变,但每个字都在收紧,“你是一个刚被別的公司裁员的程式设计师。你现在要做的事,是去碰一家百亿估值的公司。” 她停顿了一下。 “为什么?” 这个问题问得很直接。 韩路一发现顾司玥看他的眼神变了。不是刚才“公事公办”的眼神,是在评估,评估他是正常人还是有別的企图。 对一个律师来说,委託人的动机决定了这个案子值不值得接。一个没有利害关係的人要去戳百亿公司的眼睛,要么是傻,要么是圣人,要么背后有別的东西。三种都不好接。 韩路一早就知道这个问题会来。 “你说我不是被直接侵害过利益的当事人,这一点不对。”他说。 顾司玥微微抬了一下眉毛。 “我下载了快闪。”韩路一说,“我的手机里有我朋友的电话、我的聊天记录、我每天去了哪里。从我安装这个app的那一刻起,这些东西就在以base64明文传到境外伺服器上。” 他停了一下。 “我就是那两千三百万人之一。” 顾司玥没说话。 “我一个兄弟是做自媒体的。上个月在快闪投了一单gg,因为数据注水,效果远低於预期,品牌方不付尾款。他自己贴了一万多的製作费,全打了水漂。他一个月才赚八千块。”韩路一的语气很平,“他没有技术能力去证明快闪造假。他能怎么办?找客服投诉?人家让他“优化內容质量”。” 顾司玥的笔在本子上轻轻点了一下。 “我前天刚被公司裁员。”韩路一说,“原因你查过了,不用我多说。大公司欺负小人物这种事,我刚经歷完一遍。快闪乾的是同一套,我是大公司,我掌握数据,用户是小人物,我想怎么用就怎么用。反正你们看不到。” 他看著顾司玥的眼睛。 “现在我看到了。” 会议室安静了几秒。 顾司玥看了他一会儿。然后她拿起笔,重新翻开本子。 “两千三百万人里,只有你一个人跑来找律师。” “两千三百万人里,有我一个就够了。” 第六章 七十二小时 “两千三百万人里,有我一个就够了。” 顾司玥没有评价这句话。但她开始在本子上写字了。一个律师拿起笔开始写,就意味著她接了。 “方案三层。”她落笔极快,“第一,匿名举报,网信办和工信部,我来擬法律表述。第二,证据公证,你的分析材料具备法律效力。第三,法律防火墙,快闪找到你头上的任何接触都通过我中转。” 她抬起眼睛看著他。 “按我说的做,他们告不到你。自作聪明的话,我也救不了你。” 韩路一靠在椅背上。这个方案比他预想的完整得多。 “收费怎么算?” “諮询费每小时两千,不便宜。”顾司玥合上笔记本,“但你请得起,刚多拿了五万赔偿金,不是吗?” 这姐们连他离职赔偿金的事都查了。 “做律师的基本功是了解你的客户。能在被裁员当天还发现赔偿金计算错误的人,”她停了一下,“至少不蠢。” 本书首发 101 看书网藏书广,101??????.??????任你读 ,提供给你无错章节,无乱序章节的阅读体验 韩路一偷偷开了一秒视界。 【顾司玥|好感度:28→32↑4 |评价升级:有脑子的程式设计师】 “行,按你说的来。” 顾司玥站起来收东西。走到门口,她停了一下。 “你有七十二小时。” 韩路一愣了一下。 “快闪下周二有投资人闭门会,b轮交割的最后环节。会前引爆效果最大。”她的语气冷得像在念判决书,“过了这个窗口,b轮一旦close,举报的影响会小很多。” 韩路一算了一下。今天周六。周二闭门会。七十二小时。 “另外,快闪的事……做乾净。这家公司背后不简单。” 说完推门出去了。 韩路一站在会议室里,回味著最后两句话。“七十二小时”和“背后不简单”,时间线和风险提示。一个消息灵通的律师真的很有用。 倒计时开始了。 —— day 1 韩路一从律所出来,在地铁上用手机备忘录整理思路。回到家花了两个小时,把快闪的技术分析写成一份十二页的脱敏报告。数据不涉及任何非公开信息,但逻辑链完整,结论清晰,不懂技术的人也能看明白快闪在干什么。 完成后拆成两个版本。完整版给监管,精简版给媒体。 下午,公证处。 工作人员看完报告,表情从礼貌微笑变成面无表情,又从面无表情变成反覆翻页確认。 “先生,您確定这份材料可以公开?” “確定。全部是公开可获取的信息。” 盖章,签字,公证书到手。一共花了四十分钟。 出了公证处,韩路一打了三通电话。 第一个,顾司玥。 “公证完了,举报材料什么时候递?” “今晚。匿名渠道已经安排好了。” 第二个,马小飞。 “举报快闪,你那有媒体的路子吗?” 电话那头安静了三秒。马小飞的声音切换成了韩路一很少听到的认真模式:“你有硬东西?” “已经公证了,法律乾净。但必须走正规媒体首发。自媒体发,快闪法务直接告你誹谤。” “我认识的36度的编辑老赵,我今天联繫他。老韩,那帮孙子坑了我三万二,这事要是成了……” “我这可不是给你报私仇。这是2300万用户的隱私。” “行行行你高尚。但我也顺便报仇。” 第三个,张浩然。 “从帮我从金融侧梳理快闪的融资链条吗?公开信息,看估值逻辑站不站得住。” “给我一天。” 三条线同时启动。 晚上九点,顾司玥发来消息:“举报材料已递出。从现在开始,不要主动联繫任何记者,不要发社交媒体。你对任何人说的每一句话,都默认可能被取证。” “明白。” ““任何人”包括你那两个朋友。” 韩路一看著这条消息,觉得这个女人的谨慎程度堪比加密通信协议。 倒计时:48小时。 —— day 2 凌晨两点,马小飞转来老赵的消息。老赵看完材料,用马小飞的话说,“声音都在抖”。36度编辑团队连夜启动了交叉验证。 但紧跟著第二条消息让韩路一坐了起来。 老赵说:快闪的公关部似乎嗅到了什么。今天下午开始密集约行业媒体“沟通”,疑似在做舆论预案。如果不加速,对方可能抢先发闢谣声明把水搅浑。 韩路一打开快闪app,开了视界。 他的脸色变了。 快闪昨晚悄悄推送了一次热更新。更新日誌写的是“优化用户体验”,但视界清清楚楚地看到,隱私数据导出通道正在被逐步关闭。那些向境外伺服器传输用户数据的接口,有三个已经停用,剩下两个在做代码混淆。 他们在刪痕跡。 精力值掉了11点。韩路一关掉视界,给顾司玥发消息。 “快闪昨晚紧急更新app,在关闭隱私导出通道。他们开始销毁证据了。” 顾司玥三十秒后回了几个字:“提前十二小时。” 韩路一盯著这条消息。原计划周二早晨发布,现在要提前到周一晚上,留给36度的审稿时间又短了半天。 下午,张浩然的金融分析到了。一天就做完了,快闪的融资链条、股权结构、资金流向,全部用公开数据梳理清楚。结论:b轮估值的逻辑完全建立在注水数据上。数据一垮,估值就是空中楼阁。 三条线的材料齐了。就看36度审稿了。 倒计时:22小时。 —— day 3,上午。 韩路一把快闪紧急更新的前后数据分析对比截图补交给顾司玥,由匿名渠道追加到举报材料中。销毁证据这个行为本身,就是最好的证据。 36度编辑团队跑了一天半的交叉验证,补充了三位匿名信源的採访,內部审稿通过。 张浩然的金融分析打包转给老赵作辅助材料。 下午两点,马小飞在404寢室群里转了老赵的消息。三个字。 “晚上八点。” 韩路一看著屏幕,深呼吸了一下。 三天连轴转协调三条线,他累的有点撑不住了。 即使现在出了意外,他也没有太多余力应对了。 顾司玥发来最后一条:“准备好了?” “准备好了。” 韩路一关掉手机屏幕。窗外是海城的午后阳光,隔壁隱约传来林朵朵看动画片的声音。一切都很正常。 但今晚八点之后,就不正常了。 第七章 引爆 晚上八点整。 韩路一坐在电脑前,刷新了一下36度科技频道的页面。 报导上线了。 標题:《独家调查:快闪科技核心运营数据涉嫌大规模造假,2300万用户隱私或遭泄露》。 他没有做任何事。没有转发,没有评论,没有在任何平台提一个字。他只是看著。 十分钟。科技圈的微信群炸了。马小飞在404寢室群里发了一串感嘆號,张浩然发了一个句號。韩路一没回。 三十分钟。微博热搜第九。 一个小时。热搜第三。话题阅读量破两亿。评论区以每秒刷新的速度在增长。 “base64加密隱私数据???我读大一都不敢这么写。” “2300万用户的隱私就这么裸奔?快闪你是认真的吗?” “星辰资本那帮人怕是睡不著了,b轮的钱还没捂热就炸了。” 两个小时。快闪科技官方发布紧急声明,措辞模糊,既不承认也不否认,“正在核实相关信息,將第一时间向公眾通报”。 翻译一下就是“我们在想怎么圆”。 三个小时。星辰资本发布简短声明:“已关注相关报导,正在与快闪管理层沟通。” 资本市场的反应比舆论更快。快闪的b轮交割暂停了。周二的投资人闭门会直接取消了。 韩路一打开报导页面,开了一秒视界。 【该报导阅读量:287万(上升中)】 【舆论影响力评级:a】 【快闪科技估值实时波动:-22%(下降中)】 他关掉视界。 手机响了。 顾司玥。 “看到了?”韩路一接起来。 “看到了。写得很克制,全靠数据说话。”顾司玥的声音还是零下二十度,“法律层面,你是乾净的。他们查不到你。” “那你的定金,” “可以打折。” 韩路一愣了一下。 顾司玥在电话那头停了两秒。 “做得不错。” 然后掛了。 韩路一看著通话结束画面,花了几秒钟消化这四个字。顾司玥说“做得不错”,从这个人嘴里说出来,大概相当於普通人说“你是我见过最牛的人”吧。 他笑了一下,放下手机。 —— 评论区还在以每分钟两位数的速度增长。 但韩路一注意到另一件事,技术圈开始追查那份匿名技术分析的作者了。 有人在论坛上逐段分析报告的行文风格和技术视角。有人猜是某大厂的安全工程师,有人猜是竞品公司的人在搞事,有人甚至猜是快闪內部的吹哨人,“对底层技术架构太熟了,不像外部渗透”。 一个id叫“逆向工程老王”的用户发了一条长帖,从报告中对base64的吐槽方式、对数据管道的描述习惯、对隱私合规的技术理解深度三个维度做了画像分析。结论是:“作者大概率是一线大厂的后端或算法工程师,工作年限五年以上,对app行为分析有实战经验。” 距离猜到韩路一,只差最后一步。 但没有人往“刚被裁员的前鼎盛p7”这个方向想。一个失业程式设计师,在所有人的排除法里,不在候选名单上。 韩路一把这个帖子收藏了,关掉了瀏览器。 顾司玥的话还在耳边,“法律层面你是乾净的。他们查不到你。” 人肉搜索可不走法律渠道。 他需要继续保持隱身。 就在这时候,一阵剧烈的头痛毫无徵兆地劈了下来。 不是普通的头痛。像是有什么东西在他脑子里重新编译。 视界自动弹开了。 整个视野里涌进一道巨大的系统提示,金色的,占据了他半个视野。 【重大bug修復协助完成】 【影响范围:2300万用户隱私安全】 【你的行动推动了该bug的公开和修復进程】 【经验值+200】 【当前经验值:214/200】 【升级条件已满足!】 【正在升级……lv.1→ lv.2】 头痛从劈变成了炸。 韩路一一手撑住桌子,一手捂住太阳穴。眼前的世界碎裂了,像一台电脑强制重启,所有画面闪烁、断裂、重组。他感觉自己的大脑被格式化了一遍,然后重新安装了作业系统。 鼻血。又来了。 他扯了张纸巾堵住鼻子,整个人瘫在椅子上。 重启持续了大概二十分钟。 当一切稳定下来的时候,他感觉到了不同。 很不同。 他睁开眼,视界面板已经变了。 【升级完成】 【现实代码视界 lv.2】 【新能力解锁:debug修復(debug fix)】 【可通过特定操作修復已检测到的bug】 【感知范围:5米→ 50米】 【精力上限:100→ 250】 【当前精力值:83/250】 韩路一盯著面板看了十秒钟。 debug修復。 之前他只能看到bug,看到数据异常、看到隱藏情绪、看到代码缺陷。看到了又怎样?他只是一双眼睛。 现在他能修了。 范围从五米扩到五十米。他现在坐在椅子上,可以感知到整栋楼五层的所有数据。隔壁林晚晴家里的面板隱约浮现在视野边缘,楼上楼下住户的数据以半透明图层的形式叠在空间里。 信息量比之前大了十倍不止。他赶紧关掉了全范围扫描,只保留近距离的被动感知。 精力值83/250。升级消耗了不少,但上限翻了一倍多。 他低头看了看自己的双手。 连日赶报告、做公证、来回跑,加上正常的接单工作,他的身体其实挺疲惫的。肩膀酸,眼睛乾涩,颈椎有点僵。 debug修復。 试试看。 他把注意力集中在自己身上,脑子里冒出一个模糊的意图:修復身体疲劳。 面板响应了。 【检测到目標bug:身体疲劳(轻度)】 【修复方案:重置肌肉乳酸堆积+优化神经递质平衡+消除眼部疲劳】 【预计消耗:30精力值】 【是否执行?】 韩路一在心里確认了一下。 一股温热从胸口扩散开来,像有人把他扔进了四十度的温泉里。肩膀的酸痛在消退,眼睛的乾涩感消失了,颈椎的僵硬鬆开了。整个人像重新充过电一样。 精力值从83掉到了53。 但身体状態—— 韩路一站起来,伸了个懒腰。 舒服。 比睡了十个小时还舒服。比做了一个小时按摩还舒服。所有的疲劳感归零了,不是缓解,是消失。 他重新坐下来,看著面板上的“debug修復”三个字。 这个能力太变態了。 光是“消除疲劳”这一项,对一个靠脑子吃饭的程式设计师来说就已经是作弊了。更別说它还能修復別的东西。 他想了想,又试了一次。这次的目標是自己右手腕,之前连续赶报告,手腕有一点轻微的腱鞘炎前兆,弯曲的时候隱隱发酸。 【检测到目標bug:腱鞘炎前兆(微度)】 【修复方案:消除腱鞘滑膜炎症+修復微损伤纤维】 【预计消耗:15精力值】 【是否执行?】 確认。 温热感这次集中在右手腕,像被一只无形的手握住了三秒钟,然后鬆开。他活动了一下手腕,完全不酸了。 精力值38/250。 两次修復,消耗了45点精力。疲劳30点,腱鞘炎15点。小问题消耗小,符合直觉。那大问题呢?骨折、內臟损伤、慢性病,这些他不敢现在试,一是自己没有这些问题,二是消耗可能直接把他抽空。 他在心里给这个能力画了一个初步的框架: 修復范围:至少包括身体层面的小问题。其他层面……还不清楚,边界在哪需要慢慢试探。 消耗规律:问题越大越耗精力,合理。那恢復速度呢?目前精力38/250,他记得之前的恢復速度大概是每小时5%。按250的上限算,每小时恢復12.5点。大概四个小时能回到接近100点。 好太多了。 他关掉面板,往椅背上一靠。 脑子很清醒。身体状態满格。精力值暂时有点低,但会恢復。 该做正事了。 韩路一擦掉鼻血,拿起手机。 他想给马小飞和张浩然说点什么,但想起顾司玥的话,“你对任何人说的每一句话,都默认可能被取证。” 算了。不说了。 他退出微信的时候,屏幕顶部跳出来一条新消息提醒。 一个他已经很久没看到的头像。 苏念念。 “路一?好久不见。听说你从鼎盛出来了?” 韩路一看著这条消息,怔了两秒。 苏念念…… 两年多没联繫了。上一次有交集还是23年国庆节,他在朋友圈发了一张加班工位的照片,她在底下回了句“注意身体”。 他的手指悬在屏幕上方,没有打字。脑子里闪过了几个画面,三食堂门口她冲他挥手的样子,图书馆里她趴在桌上睡著的侧脸,毕业散伙饭上全班举杯的嘈杂,还有那个夏天的夜晚。 很快,像弹幕一样划过去了。 最后他打了四个字。 “嗯,出来了” 消息发出去不到两秒,对话框里苏念念的名字变成了: 对方正在输入… 第八章 两年零四个月 苏念念的微信回得很快。 “太突然了吧!你怎么也不在群里说一声?” “没什么好说的,正常流动。” “你还是这样,什么事到你嘴里都是四个字就打发了!” 韩路一看著屏幕笑了一下。苏念念说话的风格一点没变,打字永远带感嘆號,像怕对方感受不到她的情绪。 “最近怎么样?”他问。 “还活著。你呢?有什么打算吗?” “先休息一下,想想接下来干什么。” “那要不要出来坐坐?好久没见了,敘敘旧。” 韩路一打了几个字又刪掉,最后回了个“行”。 苏念念发过来一个定位。 bug café。 韩路一愣了一下。这家咖啡馆在他家附近,离小区走路十分钟,他几乎每周都去坐一坐。老周的咖啡不算最好喝,但胜在安静,wifi稳定,程式设计师扎堆的地方总有一种特殊的鬆弛感。 苏念念怎么知道这个地方的? “大眾点评搜的,评分还挺高。而且离你近,別跟我客气说你来接我之类的。” 苏念念说她明天下午在附近见个客户,三点左右能结束,“正好过来坐坐?” 韩路一说行。 关掉微信,他靠在椅背上看著天花板。 【写到这里我希望读者记一下我们域名101??????.??????】 两年多的空白说长不长,说短也不短。够一个人换两份工作,够一座城市拆掉一条街再盖起来,够两个曾经每天说话的人变成通讯录里埋在下面的一个静静地头像。 —— 第二天下午两点五十,韩路一推开了bug café的门。 老周的咖啡馆开在社区底商的一楼,门口掛著一块黑色招牌,上面画了一只举著咖啡杯的瓢虫,bug的双关。店里不大,十来张桌子,墙上贴满了各种编程梗的海报。最显眼的一张写著“it works on my machine”,旁边老周自己加了一行手写体:那就別动它。 “小韩!”老周在吧檯后面抬头,四十多岁的中年男人,退役程式设计师,头髮比同龄人少一半,脾气比同龄人好一倍,“美式还是手冲?” “先来杯美式,周哥。等会儿还有个朋友来。” “约人?稀奇。你来这儿半年了,头回带朋友。” “大学同学,好久没见。” 老周瞭然地点点头,没再多问。 韩路一选了靠窗的位置坐下。阳光从落地窗照进来,把桌上那本翻旧了的《代码大全》晒得发黄。 三点零二分,门被推开了。 苏念念站在门口。 韩路一一抬头就认出来了。变了,也没变。 头髮还是长的,但没有大学时那么长了,到肩胛骨的位置,微微有些卷。她穿了一件米白色的针织开衫,里面是白色连衣裙,踩著一双白色帆布鞋。脖子上戴了一个白色的choker,缀著一颗很小的珍珠。左手腕上一只细细的银鐲子,没有別的多余配饰。整个人还是那种乾乾净净的白色系,像从牛奶gg里走出来的。 她整个人看起来比大学时瘦了一点,下巴的线条更明显了,但笑起来还是那个样子,眼睛先弯,嘴角再跟上,像是笑容从眼睛里淌出来的。 “路一!” 苏念念看到他就笑了,朝他挥挥手,步子加快了一点,在他对面坐下来。 “念念。”韩路一也笑了,很自然地打招呼,“两年没见,你怎么瘦了?” “加班加瘦的,我们那个组一个月上了四个版本,我都快住公司了。”苏念念放下包,打量了一下他,“你倒是一点没变,还是这副样子。” “什么样子?” “就……卫衣牛仔裤运动鞋,程式设计师出厂设置。” “哪个程式设计师出厂设置有我这么帅?” 苏念念笑了,没接这个话,转头看了看店里的装潢:“这家店好有意思,墙上那个404页面是真的吗?” “老板自己写的,他以前也是程式设计师,写了十五年代码写禿了,退休开咖啡馆。” “好傢伙,前车之鑑就摆在你面前。” “我发量很健康,谢谢关心。” 老周端著两杯咖啡走过来。韩路一一杯美式,苏念念的菜单还没看,老周就先放了一杯招牌拿铁下来。 “小韩难得带朋友来,这杯我请。”老周冲苏念念笑了笑,眼神里有一种中年男人特有的“我什么都懂”的意味。 “谢谢老板!”苏念念双手接过杯子。 老周走了。苏念念低头喝了一口拿铁,抬头的时候嘴角沾了一点奶泡。 “所以你从鼎盛出来之后在干嘛?”苏念念问。 “接点散单,写写代码,想想接下来的方向。” “自由职业?” “算是吧。暂时的。” 苏念念点点头:“也好,反正你技术在那儿摆著,饿不死。” “你倒是对我挺有信心。” “那当然了,全班谁不知道你是卷王。”苏念念的语气很轻鬆,“大二那年你一个人肝作业系统课设,把教授都给整懵了,他说他看了十五年作业,头回见本科生完成度这么高的。” 韩路一被她说笑了:“你记性也太好了。” “那个事太经典了,我们班群到现在还有人提。”苏念念双手捧著杯子,眼睛弯弯的,“还有大三下学期那个比赛,你带队熬了三个通宵,比完赛直接睡在机房地板上,被保洁阿姨拿拖把捅醒的那次,” “行了行了,”韩路一摆手,“能不能说点我帅的事。” “你有帅的事?我不记得啦。” “过分了啊苏同学。” 两个人都笑了。 聊天很顺畅,像一台关机了两年的电脑突然通了电,系统文件还在,只需要重新启动一下。他们聊大学的食堂,聊室友的八卦,聊老师的口头禪。 所有话题都是安全区。 没有人提起毕业前那个夏天的晚上,也没有人提起“后来为什么不联繫了”。 两个人都很默契。 韩路一觉得苏念念变了一点。大学的时候她说话更直接,想到什么说什么,现在她会在某些地方停顿一下,像是先在脑子里筛过一遍再说出口。这种谨慎並不让人觉得虚偽,只是成熟。 “你呢?在海狸做產品经理,怎么样?”韩路一问。 海狸科技,国內第二梯队网际网路大厂,主营短视频和本地生活,去年刚在港股上市,市值两千多亿。在网际网路圈子里,海狸的標籤是“加班狠、给钱多、晋升快”,属於那种应届生挤破头想进、工作三年后又拼命想逃的地方。 苏念念的表情稍微变了一下。 “还行吧,就那样。”她喝了一口咖啡,“最近在做一个ai方向的项目,挺有意思的。” “什么方向?” “ai代码审查工具。就是帮开发团队自动审核代码质量,找bug,给优化建议那种。” 韩路一来了兴趣:“这个赛道现在挺热的。” “对,所以我们老板很著急,想抢先发。”苏念念嘆了口气,“但我们技术团队做出来的东西……怎么说呢,能用,但不够好。跟市面上的竞品比没有核心竞爭力,用户测试的反馈也一般。” “一般是多一般?” “就是用户说“这个我用gpt也能干”的那种一般。” 韩路一笑了。 “更烦的是,”苏念念的语气轻描淡写,但语速快了一些,“这个项目本来是我从立项开始推的,需求文档写了几十页,用户调研也是我做的。结果上个月空降了一个总监,直接把项目负责人换成他自己的人了。我变成了“协助推进”。” “这不是……” “是。跟你一个剧本,只不过你演的是技术版,我演的是產品版。”苏念念说完自己笑了一下,“所以我看到你从鼎盛出来的消息,第一反应是,行吧,又一个。” “同病相怜啦?” “同病相怜也是一种社交动机啊。”苏念念的语气回到了轻鬆模式,“我就是想见见你。两年了嘛。” 她说这句话的时候眼睛看著窗外,语气很隨意,像是在说一件小事。 韩路一没有接这个话。 他端起美式喝了一口,沉默了两秒。 “你们那个ai代码审查,”他放下杯子,“定位的核心用户是谁?” 第九章 代码看不见的东西 苏念念愣了一下,然后眼睛亮了。 “中小型开发团队。大厂有自己的代码审查体系,不需要外部工具。但中小团队没有专门的代码审查流程,很多bug都是上线之后才发现的。” 一聊到產品她就自动进入状態了,毕竟是资深產品经理。 “所以核心需求不是“找bug”,是“上线前拦住bug”?” “对!”苏念念啪地一拍桌子,咖啡晃了一下,“你一下子就抓到点了。我写了五页用户画像才说清楚的事,你一句话就总结了。” “我也是用户嘛。写了五年代码,最怕的就是自己看不出自己的bug。” “那你觉得现有的ai代码审查工具最大的问题是什么?” 韩路一想了想:“大部分工具只能做静態分析,看代码本身的逻辑问题。但真正让团队头疼的bug,往往不是代码语法错误,而是代码和现实业务之间的错位,逻辑上没问题,但放到实际场景里就出bug。这种东西,ai看不出来。” 苏念念放下杯子,身体微微前倾:“你继续。” “比如一个电商app的推荐算法,代码逻辑没错,但上线后发现推荐结果严重偏向高价商品,低消费用户的留存率暴跌。这不是代码bug,这是代码和用户行为之间的错位。现有的ai工具分析不了这种东西,因为它只看代码,不看代码运行后的现实世界反馈。” 他说这些话的时候,脑子里闪过了什么东西。 一个模糊的、还没有成形的想法。 如果……有一款工具,不只是检查代码,而是能检测代码在现实场景中可能触发的问题呢? 这不就是他的视界在做的事吗? 当然,他不可能把自己的金手指做成一个產品。但视界的逻辑,“连接代码和现实”,完全可以抽象成一套方法论,用ai来模擬。虽然不可能做到视界那种精准度,但即使能实现百分之十的效果,也远超现有的竞品。 苏念念的声音把他拉了回来。 “说得我心痒痒的。”苏念念托著下巴看他,“你要是早两个月来我们组,这项目也不至於被人摘走。” “天下產品经理的项目,一半都是被摘走的。別往心里去。” “你还劝我呢?你自己被摘得比我还惨。” “所以我现在多通透啊,过来人的智慧。” 苏念念被他逗笑了,用勺子拨动著杯子里的拉花。阳光把她的侧脸照得很温柔,细碎的头髮丝在光里变成金色。 老周在吧檯后面擦杯子,余光瞟了一眼这边,嘴角若有若无地翘了一下。 “你接下来真就打算一直接散单?”苏念念问。 “不是长久之计。”韩路一靠在椅背上,“在想做点自己的东西。” “什么方向?” “还没定。有几个想法在脑子里,还不成熟。” “那想好了告诉我,说不定我能帮上忙。”苏念念说得很自然,“我好歹做了几年產品,用户调研和需求分析还是能干的。” “行,到时候找你。” 他说这话的时候確实只是客气,但苏念念认真地点了点头。 他们又聊了一会儿別的。她问他在看什么书,他说最近在看一本讲分布式系统的。她说自己在追一部剧,问他看不看,他说不看,她说你真无聊。 四点半了。 苏念念看了一眼手机:“五点有个会要回去准备,我得走了。” “行。”韩路一站起来,“我送你到地铁站。” “不用不用,走几步就到了。”苏念念摆手,拿起包站起来。 两个人走到门口。老周在后面喊了一声:“小韩,下次带朋友来打八折啊!” 苏念念回头冲老周挥了挥手:“谢谢老板!” 推开门出去,外面是傍晚的阳光,已经不那么刺眼了,把整条街染成暖黄色。 苏念念在门口站了一下。 “路一。” “嗯?” “以后……常联繫啊。” 她说这话的时候在笑,语气很轻鬆,像是隨口一说。但她的脚尖微微朝內侧扣了一下。 “好啊。”韩路一说。 苏念念冲他笑了一下,转身沿著人行道走了。白色帆布鞋踩在落日的阴影边缘,步子不快不慢。 韩路一站在bug café门口看了两秒,转身回了店里。 老周已经在给他续了一杯美式,放在他刚才的位子上。 “谢了周哥。” “大学同学?”老周问。 “嗯。” “不错。” 老周没再多说,低头继续擦他的杯子。 韩路一坐下来,端起咖啡喝了一口。 苦的。 他拿出手机,打开备忘录。 在空白页面上打了几个字: “代码审查工具,连接代码与现实场景,bugkiller?” 然后他盯著这行字看了一会儿,又在下面加了一行: “第一步:找个產品经理。” 写完他自己笑了一下。脑子里自动浮出了一张刚才还坐在对面、用勺子拨拉花的脸。 他关掉手机,靠在椅背上。 窗外最后一点阳光消失在对面楼顶。老周打开了店里的暖黄色灯,咖啡机嗡嗡地响著。 韩路一脑子里那个模糊的想法,比两个小时前清晰了不止一点。 它已经有了形状,有了名字,有了目標用户,甚至有了一个可能的合伙人。 就差动手了。 他又靠了一会儿。老周在吧檯后面安静地磨豆子,整个店里只剩他一个客人了。 韩路一拿起手机,习惯性地下拉了一下通知栏。 一条新闻推送卡在最上面。 【快闪科技ceo丁仁公开回应:匿名举报系恶意誹谤,已向公安机关报案,將依法追查信息源头】 韩路一的手指停了。 他点进去扫了一眼。声明的措辞很讲究,一个造假数据都不正面回应,全部火力集中在“追查匿名举报人”上。末尾引了刑法第二百四十六条,誹谤罪。 他知道这条罪名在这案子上根本站不住脚,但丁仁的目標压根不是法律,他在对著两亿围观群眾喊话:我不解释,我找人。 典型的祸水东引。 韩路一退出新闻,打开微博看了一眼快闪相关的討论。 丁仁的声明底下已经炸了。骂的占一半,但另一半的討论方向让他不太舒服,大家真的开始认真猜匿名举报人是谁了。 “逆向工程老王”又更新了一条长帖。 上次他的画像结论是“大厂后端/算法工程师,五年以上”。这次在丁仁声明的评论区里又往前推了一步: “匿名报告中对快闪数据管道架构的描述精度极高,对各种技术细节的剖起深入浅出。这意味著作者要么是快闪內部人员,要么具备远超常规的逆向分析能力。结合此前的画像,如果不是內部人,那这个人可能是业界知名的技术大牛。” 帖子底下最热的评论: “所以要么是內鬼,要么是大神。丁总你確定要找吗?找到了你请得起吗?” 韩路一没笑出来。 “远超常规的逆向分析能力”,老王不知道自己离真相有多近。 他把丁仁声明的连结转给了顾司玥。 三分钟后,顾司玥回了两条消息。 第一条:“法律上不构成威胁,我明天出一份备忘。” 第二条:“从现在起,在任何平台、任何场合,都不要討论快闪。一个字都不要提。” 韩路一回了个“好”字。 他把凉透的美式一口喝完了。站起来,背上包。 老周在吧檯后面喊了一声:“明天见,小韩。” “明天见,周哥。” 推开玻璃门走出去,外面已经黑透了。路灯橘黄色的光把他的影子拖得很长。 韩路一走了两步,又摸出手机看了一眼。 备忘录最上面的两个文档,一个写著bugkiller,一个写著“不要提快闪”。 他锁了屏,加快了脚步。 第十章 赚钱如呼吸 快闪的事先放著,生活还得继续。 升级到lv.2之后的第一个完整工作日,韩路一打开了自由开发者平台。 和之前不一样。 之前他用视界扫需求列表,能看到甲方靠不靠谱、预算是不是虚標、有没有额外的隱藏需求。这些信息让他能精准筛选高价优质单,一天赚个一万多不是问题。 但那只是“看”。 现在他能“修”了。 第一单,一个中型电商平台的后端优化。甲方描述是“系统偶尔卡顿,原因不明”,报价15000。 韩路一打开甲方提供的代码仓库权限,视界开启。 代码上浮现了一层半透明的高亮標註。三个bug,修復路径清清楚楚,改哪个文件、改哪一行、怎么改,全部列在面板上。 以前一个bug得他自己分析半天。现在debug修復直接给出了处方,他只需要动手抓药。 四十分钟,三个bug全部修完。他写了一份简洁的修復报告发给甲方。 甲方回覆:??? 第二条消息:哥们你这也太快了吧 第三条消息:我们自己的团队排查了两周都没找到原因 第四条消息:牛逼 第五条消息:追加个赏金行不行? 韩路一回了一个微笑表情。 第二单,一个初创公司的app崩溃问题。报价8000。七个bug,最严重的是內存泄漏。半小时搞定。 第三单,一个小程序的支付回调异常。报价3000。问题不大,十五分钟收工。 十一点半。三单全部交付。总收入两万六。 他在鼎盛干半个月,税后到手也就这个数。 当然,自由职业要自己缴税,社保也得另出。但就算打完折,半天干出半个月,这笔帐怎么算都不亏。 这时,甲方的好评已经掛上平台了。 “史上最快交付,质量无可挑剔。” “这人是不是开了掛?半小时解决了我们两个月的bug。” 韩路一看著“开了掛”三个字,嘴角抽了一下。 你还真说对了。 他关上笔记本电脑,靠在椅背上。 这是韩路一五年来,第一次干完了所有的活。 在鼎盛的时候,他的日程表上从来没有“空閒”这个词。早上九点到,晚上九点走,运气好的话。赶版本的时候十一二点是常態,凌晨两三点也不稀奇。午饭是工位上扒两口外卖,晚饭是会议室里啃麵包。周末偶尔能休一天,但手机上隨时会弹消息。 他已经忘了工作日的中午是什么样子了。 韩路一站起来,走到阳台上。 二月的阳光照进来,暖洋洋的。楼下的小公园里,几个老大爷正在下棋。旁边的长椅上,一个年轻妈妈在刷手机,婴儿车里的小孩睡著了。小卖部的阿姨搬了个板凳坐在门口晒太阳,嗑著瓜子。 这些人每天都在这儿。只是他不在。 他站了一会儿,回屋打开冰箱。 空的。除了半瓶老乾妈和两盒过期的酸奶。 韩路一拿上钥匙下了楼。小区门口有个菜市场,他路过了几百次,但从来没进去过。 他进去买了西红柿、鸡蛋、一把小葱。 回家做了一盘番茄炒蛋。 不好吃。 但至少没糊。 他站在厨房里把午饭吃完了,洗了碗,又回阳台上站了一会儿。 韩路一脑子里浮出了一个奇怪的念头:这就是自由的感觉吗?真不习惯。 突然他听到敲门声,刚拉开防盗门,差点被一个小小的身影撞了满怀。 “路一哥哥!” 林朵朵抱著一个粉色的平板电脑,眼眶红红的,小脸上还掛著没干的眼泪。 “怎么了朵朵?”韩路一蹲下来。 “我的平板坏了……”林朵朵把平板举到他面前,屏幕卡在一个花花绿绿的界面上,完全不动了,“动画片放到一半就不动了,重启也不行,妈妈也弄不好……” 她说著说著嘴巴又瘪了。 “让我看看。”韩路一接过平板。 隔壁501的门开著,林晚晴站在门口,一手拿著画笔,头髮隨便扎了个丸子,脸上还沾著一点顏料。 “不好意思啊,朵朵非要来找你。我说了妈妈明天给你修,她不听。”林晚晴有点不好意思。 “没事林姐,小事。” 韩路一低头看著平板,隨手开了一秒视界。 【设备:儿童平板|型號:小豆平板5 |故障类型:系统级】 【bug检测:后台进程內存溢出导致系统冻结|起因:某动画app存在內存泄漏(v3.2.1已知缺陷)】 【debug修復路径:强制安全模式启动+清除该app缓存+降级至v3.1.8稳定版】 【预计消耗:2精力值】 两点精力。比他给自己消除疲劳便宜多了。 韩路一关掉视界,按照修復路径操作。长按音量和电源键,进入安全模式,清除缓存,把那个有bug的动画app回退到上一个版本。整个过程不到两分钟。 屏幕亮了。那只粉红色的小猪重新在屏幕上蹦蹦跳跳。 “好了。” 林朵朵的表情变化堪称教科书级別,从含泪到震惊到狂喜,总共用了零点五秒。 “路一哥哥好厉害!”她一把抱住平板,又一把抱住韩路一的腿,“比妈妈厉害一百倍!” “……谢谢你的一百倍。”林晚晴在门口翻了个白眼,但嘴角是往上翘的。 面板闪了一下。 【微型辅助任务完成|经验值+3 |当前经验值:17/200】 “路一哥哥你明天在不在家?”林朵朵仰著脑袋问。 “大概在。怎么了?” “我想给你看我画的画!妈妈教我画的,可好看了!” “朵朵,人家路一哥哥很忙的,” “不忙不忙,”韩路一站起来,冲林晚晴笑了笑,“我一般中午就收工了,以后下午朵朵隨时来敲门。” 林晚晴看了他一眼,犹豫了一下:“那……谢谢你啊。她最近幼儿园放寒假,我一个人又要赶稿子又要看她,確实有点忙不过来。” “理解。我反正在家,多一个小朋友在旁边画画,还热闹点。” 他说得很隨意。林晚晴没再推辞,点了点头。 从第二天开始,林朵朵每天下午出现在502门口。带著她的平板、她的画笔、她的小书包,像上班一样准时。 韩路一的一周就这样有了固定的节奏。 上午接单。两到三个,挑问题有意思的接,中午前收工。下午是他自己的时间。 他开始做一些以前没时间做的事。 周四傍晚去跑了一次步。上一次跑步可能还是大学的时候。他沿著小区外面的河道跑了八分钟就喘得不行。五年的996,帐都记在身上。 周五下了场小雨。他坐在阳台上看书听雨声,朵朵在屋里画画,林晚晴送了一碗洗好的水果过来。 这些都是很小的事。小到在鼎盛的时候连想都不会想。 但连在一起,它们构成了一种韩路一快忘掉的东西。 生活。 —— 一周结束。 平台加私单,总收入六万五。 他在鼎盛干一个月,税后到手五万。一周干出一个多月。 钱的事解决了。但韩路一发现了一个新问题。 视界面板上,经验值只从17涨到了20。 十几个活,六万五,三点经验。帮朵朵修个平板也是三点。 这套系统显然不鼓励他当一个高薪接单侠。它想让他做点別的。 韩路一关掉银行app,打开了电脑。 他有了一个想法。 第十一章 马甲 韩路一在论坛上註册了一个马甲id:“nullpointer”。 第一天,有人发帖求救:线上服务每隔三到五天必崩一次,重启就好,但死活找不到规律。帖子下面二十多条回復,有人说查內存泄漏,有人说上监控告警,有人直接甩了一段chatgpt的分析——全都隔靴搔痒。 韩路一开视界扫了一眼帖子里贴的架构图和日誌截图。虽然不是直接看代码仓库,但他的经验加上bug检测的辅助,还是捕捉到了一条线索。 他敲了一条回復,三段话,指出了两个连接池共用超时配置的问题,给了具体的修改方案。 帖主半小时后追更:改了,观察中。 三天后再追更:稳了。彻底稳了。 帖子火了。两百多条回復,一大半不是在討论技术,是在问“这人谁啊”。 【辅助任务完成|经验值+2 |当前经验值:22/200】 果然。免费帮人修bug,系统给的经验比商业接单多出一大截。 韩路一找到了正確的打开方式。 从那天起,他每天下午花一两个小时泡论坛。专挑那种討论了几十层还没结论的疑难帖。这种帖子围观的人多,答案的传播面最广。 有人的生產环境偶发段错误,查了一个月,四种工具轮著上都抓不到。他视界一扫,发现是第三方库和结构体的內存对齐打架,一条回復解决。 有人的微服务链路偶尔超时,全链路追踪看不出异常。他指出是dns缓存过期导致的偶发解析延迟,改一行配置就好。 有人的排序算法在特定数据集上结果错乱。他发现是浮点精度问题导致比较函数不满足传递性,加一个epsilon就稳了。 每次都是一样的套路:一堆人討论了半天,他进来一条回復,结束。 论坛里开始流传一句话:“等nullpointer来。” 有人猜他是大厂的架构师,有人猜他是退休的技术vp,有人说他是某个开源项目的核心维护者。还有人开了个投票帖:“nullpointer到底是谁?”选项里从“字节3-2”到“中科院研究员”到“openai早期员工”都有,最高票的是“不知道但是跪了”。 一周下来,“nullpointer”在几个主流技术论坛上攒了两千多个赞。 经验值从20慢慢爬到了35。 不快,但蚊子腿也是肉。 当然,论坛上不只有技术求助帖。 快闪科技的事还在发酵。36度的调查报导发出去十天了,后续跟进一篇接一篇。网信办介入调查,ceo丁仁被约谈,cto周明哲“因个人原因离职”。业內都知道是什么个人原因。app下架三天,b轮融资彻底黄了,估值从八十亿跌到不到三十亿,还在跌。 韩路一刷到这些消息的时候,手指会停一两秒,然后继续往下划。 丁仁没消停。他请了公关团队在各个平台放话,说已经“锁定了几个嫌疑目標”。措辞像钓鱼,逼举报人自己露头。 更麻烦的是“逆向工程老王“的画像帖。这帖子就掛在韩路一每天泡的同一个论坛上,每隔几天更新一版。最新的结论已经从“大厂后端工程师“缩窄到了“有推荐系统实战经验的高级专家”。 距离猜到韩路一,可能就差一两步了。 他每次刷到这个帖子都会多看两眼,然后关掉。顾司玥的禁令还掛在备忘录最上面——“不要提快闪”。 周五晚上,他刷完最后一条帖子,准备关电脑。 自由开发者平台弹了一条新需求推送。 他本来没打算看,今天已经做了三单了。但標题吸引了他的注意力。 【紧急外包|推荐系统核心模块优化|报价:50000 |甲方:鼎盛数字科技(深圳)有限公司】 鼎盛数字科技。 鼎盛集团旗下的全资子公司,负责集团的数位化產品线。韩路一在鼎盛工作的最后一年,有大半年的代码是在这个子公司的代码仓库里提交的。 他点开了需求详情。 “推荐系统核心算法近期出现性能异常,峰值期延迟飆升300%+,用户留存指標持续下降。內部团队排查两周未定位根因,现紧急外包高级技术顾问协助诊断……” 韩路一看著这段描述,慢慢把椅子往后推了一点。 这套推荐系统他写了五年。git记录里两千多次commit,大部分改了什么他闭著眼睛都能说出来。 陈博文大概连commit记录都没看过。 需求描述下面附了一段脱敏后的技术概要,三页pdf。 韩路一看了两行就停住了。 关键参数后面全都跟著括號备註,峰值延迟300%+后面写著(对比基线为2025q3上线版本),qps閾值后面写著(当前集群配置下理论上限)。 他一眼就认出来这是小明写的。 赵启明,他带了三年的组员。从实习生带到p5,手把手教的代码规范和文档格式。 小明把问题发到了外包平台上。 这意味著內部已经彻底搞不定了。陈博文那个团队排查了快两周都没定位根因,最后是小明——八成是他主动揽的活——写了这份技术概要往外发。韩路一能想像他这两周加班到什么程度。 他已经看出问题了,陈博文的团队改了他的核心调度模块,把原来的动態权重分配改成了静態规则引擎。 这就像把一辆手动挡跑车改成了自动挡老年代步车,然后问“为什么跑不快了”。 韩路一盯著屏幕看了十秒钟。 五万块的单子。他闭著眼睛都能修。 但这不是钱的问题。 这是陈博文摘走的桃子,正在他手里烂掉。 韩路一关掉了需求页面。 又打开了。 又关掉了。 他靠在椅背上,看著天花板。 窗外有风,把阳台上晾的t恤吹得啪啪响。 他拿起手机,又开视界扫了一眼那条需求。 面板弹出来了。 【鼎盛数字科技·推荐系统|当前状態:严重退化|核心算法稳定性:d-】 【关联人物:陈博文(项目负责人)|该系统异常与其团队改造直接相关】 d-。 他写了五年的系统,被改成了d-。 韩路一关掉视界,把手机扣在桌上,屏幕朝下。 第十二章 鼎盛的外包 第二天早上,韩路一醒来第一件事就是打开电脑,重新点开了那条外包需求。 昨晚他没做决定。睡了一觉,脑子清醒了一些,但决定还是没做出来。 需求页面上附著的技术概要只有三页,做了脱敏处理,去掉了公司名和项目名,但对韩路一来说跟没脱一样。 每一段描述他都能对应到具体的代码文件。 “核心推荐引擎近期进行了架构调整,將原有的动態权重分配模块替换为基於规则的静態引擎。” 韩路一看到这句话的时候,表情很微妙。 动態权重分配。那是他花了八个月设计的核心调度模块,整个推荐系统的心臟。它的精妙之处在於能根据用户实时行为自动调整推荐权重,每一次点击、每一次滑动、每一次停留都会被纳入计算。 这套东西不是写出来就能用的,是他一边写一边调,跑了上亿条用户数据,一个参数一个参数地磨出来的。 然后陈博文的团队把它拆了,换成了静態规则引擎。 韩路一能理解为什么。动態权重模块確实复杂,没有他本人在场,团队里没有第二个人能完全看懂那套逻辑。陈博文的选择是,看不懂的东西就换掉,换成看得懂的。 技术概要后面还列了一串症状:峰值期响应延迟飆升、推荐精准度下降、用户留存率持续走低、a/b测试全面不如旧版。 说白了就是:换了之后全面拉胯,而且越来越差。 韩路一靠在椅背上,开了视界。 精力值满的,250/250。他把注意力集中在屏幕上那三页技术概要上。 面板炸开了。 不是一般的弹窗。整个屏幕被半透明的红色警告覆盖,像一面著火的墙。 【目標系统:鼎盛数字科技·核心推荐引擎】 【整体稳定性评级:d-(极度危险)】 【严重bug(s级):12个|中等(a级):37个|轻微(b级):91个】 【预计完全崩溃时间:上线后72小时內】 140个bug。红的黄的橙的,密密麻麻铺了一屏,像一份病危通知书。 他只扫了一眼前三个s级bug就不想再看了,內存泄漏,三天后系统会把自己撑死。数据管道断裂,四分之一的用户数据在悄悄丟失。並发锁死,高峰期两成概率直接雪崩。 三颗定时炸弹,隨便一颗炸了都够上一次热搜。 他花了三年时间把这套推荐系统从能用调到好用,又从好用磨到稳如老狗。每一个参数、每一条权重、每一次版本叠代,都是他一行一行敲出来的。 陈博文接手半个月。140个bug。 他忽然想起了第一天被裁时,视界扫到陈博文面板上的那行字—— 【warning:该对象存在3个严重bug点击展开(当前等级不足)】 当时他是lv.1,看不到详情。 那三个严重bug,其中一个大概就是这个,陈博文摘了他的果子,但咬不动。 debug修復的面板紧跟著弹了出来。 【检测到可修復系统|修复方案已生成|预计4小时|精力消耗:约120点】 他当然能修好。这套代码是他写的,有些bug他看一眼就知道改哪行。 他关掉了视界。 屏幕回到了正常的外包需求页面。右上角有两个按钮:【接受需求】和【忽略】。 韩路一的手指停在滑鼠上。 接还是不接? 接。五万块,四个小时的活。三年心血,说不心疼是假的。 不接。桃子是陈博文摘的,烂了也该他兜著。况且平台是实名的,他一接单,陈博文就知道了。到时候鼎盛那边怎么想?觉得他捨不得走?觉得他求著回去? 韩路一想了一会。 然后点了【忽略】。 不接。 他关掉了外包页面,端起桌上已经凉了的咖啡喝了一口。 不接归不接,但有些东西憋著也浪费。 他打开论坛,以nullpointer的身份花了四十分钟写了一篇《推荐系统架构改造的七个经典陷阱》。全部脱敏,不提鼎盛不提任何公司,纯技术分享。但小明要是看到了就会知道,七个陷阱里至少有三个,他正在踩。 算是隔空递了把伞。接不接,是小明自己的事。 发完帖子,他关掉论坛。 脑子开始转了。 这140个bug。这两周接单修过的上百个bug。再往前,五年里经手的几千个bug。 它们长得不一样,但死法都一样。 內存泄漏的死法是撑死自己。並发锁的死法是卡死自己。数据管道的死法是悄悄烂掉,等你发现的时候已经晚了。 同样的模式,在不同的项目里反覆出现。他每次修bug,本质上就做两件事,认出模式,匹配方案。 韩路一的手停在咖啡杯上。 认出模式。匹配方案。 这不就是餵给ai乾的活吗? 他放下杯子,掏出手机翻到备忘录里那行字—— “代码审查工具,连接代码与现实场景,bugkiller?” 那天这只是一个问號。现在问號没了。 把视界看到的bug模式全部整理出来,特徵、触发条件、修復路径,餵给ai,让它学会“看到代码就知道上线后会出什么问题”。ai不需要拥有视界,它只需要学会视界看到过的东西。 就像教ai下棋不需要教它思考,只需要让它看够多的棋局。 韩路一打开电脑。新建文件夹,命名“bugkiller”。新建文档:《bug模式资料库 v0.1》。 然后开始写。写得很快。这两周修过的bug、今天扫出的一百四十个bug、五年里踩过的坑,全从记忆里涌出来,按类型自动归位,內存类、並发类、数据流类、接口类,每一类下面是触发条件、典型表现、修復路径。 他像在给一个什么都不懂的新手编一本《bug大全》。 写了两个小时,停下来。 不够。一个人的经验撑不起一整个资料库。他需要更多样本,更系统的分类。 他需要一个產品经理。 韩路一拿起手机,找到苏念念的微信对话框。 “念念,上次聊的ai代码审查方向,我有个想法。今晚有空吗?吃个饭聊聊。” 发出去不到三十秒,苏念念回了:“今晚?!几点?” “七点。” “没问题!下班正好六点半。什么想法?先说说?” “到了再说。” 对话框顶部的“对方正在输入…”闪了好几次。最后发过来的不是追问,是: “那我先选个餐厅。你想吃什么?” “隨意,不挑。” “好,我来定。” 韩路一觉得有点好笑,明明是他约的人,三句话下来主导权就到对方手里了。 不过也正常,苏念念做產品经理的,抢需求主导权是本能。 韩路一放下手机,又闷头写起了文档,再抬起头已经是下午四点半了。 离七点还有两个半小时。 他回头看了看屏幕上刚建好的bugkiller文件夹,想了想,没有继续写文档。今晚跟苏念念聊的时候,脑子里得是活的想法,不能是写僵了的文字。 他关掉电脑,起身去洗了个澡,换了件乾净的衬衫。 出门的时候,隔壁传来林朵朵的声音,在跟林晚晴讲幼儿园的事。 韩路一带上门,往地铁站走去。 晚风不凉也不暖,三月中旬的海城,恰好卡在两个季节的缝隙里。 第十三章 辣得莫法 晚上七点,苏念念选的餐厅。 不是什么高档地方,是他家附近商圈的一家湘菜馆,叫“辣得莫法”。 他到的时候,苏念念已经在靠窗的位置坐著了。 韩路一拉开椅子坐下,抬头看了她一眼。 上次在bug café是下午,阳光从落地窗照进来,苏念念坐在逆光里,乾净清爽,像一杯温水。今天是晚上,餐厅暖色的吊灯从上方打下来,她的眉眼轮廓比白天更深,长发散著垂到肩上,浅杏色的针织衫衬得锁骨那截细链格外显眼,整个人多了一点白天没有的味道。 “今天真好看。”韩路一坐定了,语气隨意得像在说今天天气不错。 苏念念在菜单上滑动的手指顿了一下。 “……哪天不好看了?” “没有不好看的时候。上次是上次的好看,今天是今天的好看。” 他说得太顺了,顺到苏念念没办法判断这是真心话还是嘴贫,接了像在撒娇,不接又显得小气。 “嘴真贫。”她最后只说了这三个字,转头看向窗外,耳朵尖有一点点红,但灯光昏黄,看不太出来。 她面前摆著一台打开的苹果电脑,屏幕上密密麻麻的都是表格。 服务员过来了。苏念念刚要拿菜单,韩路一已经开口了。 “一个剁椒鱼头、一个小炒黄牛肉、一个虎皮青椒、一个酸辣土豆丝。米饭两碗。再来一扎酸梅汤。” 苏念念看著他,手里的菜单举了一半,没放下也没打开。 “……你点这么快?” “我家就在附近,这家店来过几次。”韩路一顺手接过她手里的菜单递还给服务员。 苏念念把菜单放下了,看了他一眼,“你还记得我爱吃剁椒鱼头?” “你上次在咖啡馆说最近忙得没时间好好吃饭,想吃鱼。” 苏念念愣了一下。她自己都忘了说过这句话。 等菜的时候,苏念念把电脑转过来给他看。 “你说有想法要聊,又不给我剧透。我只好自己猜了。关於ai代码审查,我先把赛道摸清楚了。”她抬了抬下巴,“產品经理的基本功。” 屏幕上是一份竞品分析表。十七款產品,每一款都列了核心功能、技术路线、定价策略、用户评价、融资轮次。最右边一列是她自己標的评分,满分五分,最高的一款只拿了三分。 “你什么时候做的?”韩路一问。 “上次跟你聊完就开始整理了。本来只是隨手查查,结果越查越多。”苏念念说得很轻鬆,像在说一件不值一提的事。 韩路一看了她一眼。她眼下有一层薄薄的遮瑕,盖住了熬夜的痕跡。 “你给最高分的这款,缺什么?”他指著表格问。 “跟上次我跟你说的一样,只能做静態分析。找到了bug,但不能告诉你这个bug在真实业务场景里会造成什么影响。程式设计师需要的不是“你这行代码有问题”,而是“这行代码上线后会炸成什么样”。” “所以核心痛点是——” “是“代码和现实之间的鸿沟”。”苏念念用手指敲了敲桌面,“你上次的原话。我回去想了好几天,越想越觉得你说到点子上了。” 剁椒鱼头端上来了,热气腾腾的。韩路一拿起公筷,挑了几块鱼腮边最嫩的肉放到苏念念碗里。 “先吃,凉了腥。” 苏念念低头看了一眼碗里的鱼肉,全是最好的部位。 她没说谢谢,拿起筷子吃了一口。认识四年了,他给谁夹菜都挑最好的部分,她早就习惯了。 “我想做一款工具。”他说,“名字我都想好了。bugkiller。” “bugkiller?”苏念念念了一遍,嚼著鱼肉,皱了下眉,“名字太geek了,程式设计师听著过癮,但以后要做商业化的话不好卖。先当內部代號用吧,回头再想个正式的。” “它不只是找bug。它要做的是,”韩路一顿了一下,在脑子里组织了一下语言,“建立一个bug模式资料库。把各种类型bug的特徵、触发条件、影响范围、最优修復路径全部结构化,然后用这些数据训练ai模型。让ai学会“看到一段代码就知道它上线后可能会出什么问题”。” 苏念念放下筷子,身体前倾。 她进入状態了。 “等等,你说的bug模式资料库,数据从哪来?这是最关键的问题。市面上的竞品之所以做不好,就是因为训练数据只有代码本身,缺乏“代码在真实场景中的表现”这一层。” “从我这里来。” 苏念念眨了两下眼睛。 韩路一解释:“我这些年写了几十万行代码,debug过的系统也少说有几十个。最近自由接单又修了上百个项目。每一个bug的特徵、触发条件、修復路径,我都在记录。” 这是实话。只不过他省略了“视界和debug修復帮我整理的”这个部分。 “你的个人经验当然有价值,但一个人的样本量不够啊。”苏念念皱眉,“ai训练需要大量数据,” “对,所以第一步是做最小可用產品。用我现有的模式资料库做一个原型,先验证思路能不能跑通。如果跑通了,第二步再想办法扩大数据源,比如接入开源社区的bug报告、公开的代码漏洞库、技术论坛的问答数据。” “mvp先行,数据飞轮后做。”苏念念总结了一句。 “对。” “那你的mvp打算多长时间做出来?” “一周。” 苏念念正在喝酸梅汤,差点呛了。 “一周?你认真的?” “我已经开始写了。今天下午搭了bug模式资料库的框架,分类结构都想好了。算法层面我有现成的经验,模型训练我也熟。一周出原型不是问题。” 苏念念看了他三秒钟,把酸梅汤放下了。 “你知道我在公司推那个ai代码审查项目,光需求阶段就花了两个月。” “因为你们有流程,有审批,有跨部门协调,有领导要拍板。我一个人。” 苏念念想了想,笑了:“好吧,卷王你说一周就一周。那我能帮什么?” “用户调研和需求文档。”韩路一说,“你比我了解用户。你来定义bugkiller应该长什么样、核心功能优先级怎么排、第一批目標用户是谁。” “这我在行。”苏念念已经开始在电脑上打字了,酸辣土豆丝凉了都没动。 两个人一边吃一边聊,越聊越快。苏念念一手夹菜一手打字,韩路一说到技术方案的时候习惯性用筷子在桌上比划,被她拍了一下手背,“別拿筷子点桌子,不礼貌。” 剁椒鱼头见底的时候,苏念念的电脑上已经有了一份完整的mvp需求文档。 韩路一看了一遍,只改了两处措辞。 “你这需求写得太清楚了。”他说。 “不然呢?写需求含糊其辞等著开发骂我?”苏念念哼了一声,“而且……” 她停了一下,语气变轻了一点。 “好久没碰到这么聊得来的开发了。我在公司跟技术团队掰扯一个需求能掰扯一个礼拜,你这儿四十分钟就搞定了。” “那是因为你需求写得好。” 苏念念看了他一眼,没说话,低头合上了电脑。灯光从侧面照过来,睫毛在她脸上投了一小片阴影。 “一周后你给我看原型,我帮你做用户测试。”她说。 “你用什么身份做?你还在公司上班呢。” 苏念念端起酸梅汤喝了一口,视线落在窗外。 “当作朋友帮忙。”她过了两秒才说,“反正我自己的项目被人拿走了,閒著也是閒著。” 韩路一叫了买单。苏念念抢了一下没抢过,瞪了他一眼:“下次我请。” “行,等bugkiller上线那天你请。” “成交。”苏念念收好电脑,又看了他一眼,“对了,回去別又泡麵对付,冰箱里多少放点东西。” “我什么时候泡麵对付了?” “你大学四年有三年的午饭是泡麵加火腿肠,別以为我不知道。” “……那是因为懒,不是因为穷。” “结果呢?现在也没改吧。” 韩路一想反驳,但发现自己昨天中午確实吃的泡麵。他没说话。 苏念念笑了一下,没追问。 出了餐厅,夜风有点凉。 “你怎么回去?”韩路一问。 “打车。”苏念念掏出手机叫车,“你呢?” “走路,十五分钟。” “那你先走吧,別等我了。” “不急。”韩路一靠在路灯杆上,“等你车来了我再走。” 苏念念看著手机屏幕,没抬头。风把她的长髮吹到脸侧,她伸手別到耳后。 “韩路一。” “嗯?” 她好像要说什么,但手机响了,车到了。 “没事。”苏念念拉开车门,回头冲他笑了一下,“回去早点睡,別又写到凌晨。” “知道了,妈。” “……滚。” 车门关上。车开走了。 韩路一站在原地看著尾灯消失在路口,然后往回走。 他习惯性地开了视界。 街边的一切立刻有了数据浮层,公共垃圾桶底座的螺丝鬆了两颗,便利店的招牌有三个像素的色偏,对面人行道上一个跑步的中年男人左膝半月板有磨损。 整个世界像被掀开了一层皮,露出底下密密麻麻的代码。 韩路一走了几步,忽然停了一下。 整个晚上,他一次都没有对苏念念开过视界。 不是忘了。 韩路一关掉视界,继续走。 第十四章 二十三个Bug 一周。 韩路一关掉所有接单平台,手机调静音,冰箱塞满速冻水饺和罐装咖啡。一周只做一件事。 前两天最顺。框架和资料库是他的舒適区,闭著眼睛都能搭。第三天开始啃核心引擎,晚上卡住了,模式匹配逻辑怎么调都不对,盯著屏幕两个小时脑子越转越慢。他下楼在小区走了一圈,冷风一吹想通了:特徵提取的粒度选错了。回来改了方案,通了。后面几天顺流直下,接口、串联、测试,每天睡前用一次debug修復消除疲劳,第二天满血继续。换成以前在鼎盛,连续高强度编码三天人就废了。现在不会。 核心中的核心是bug模式资料库。韩路一把用视界积累的几百种bug模式全部结构化,每种bug长什么样、什么条件触发、影响多大、怎么修最优。別人训练ai用的是代码本身,他训练ai用的是代码在真实世界里的死法。 训练是最烧钱的环节。 韩路一在云平台上查了一圈价格,算下来光训练这一项就要好几万。他盯著报价页面看了半分钟,ai创业的第一道门槛,劝退九成独立开发者的那道门槛,现在摆在他面前了。 好在他有一个別人没有的优势:数据质量极高。別人需要十万条脏数据才能训练出基本能用的模型,他用视界標註过的三千条乾净数据就能餵出来。数据量小,训练轮次就少,算力也成比例下降。 他选了折中方案:开源轻量模型做底座,竞价实例跑正式训练,做了断点续传防中断。最后花了四万出头。 五年积蓄加上离职补偿,四万不算伤筋动骨。 但四万只是一轮训练。后面要花多少,他不敢细算。 先把原型跑通再说。 第七天晚上,代码写完了。 光標停在最后一行的分號后面。韩路一的手离开键盘,十指交叉搁在脑后,盯著屏幕。 他忽然有点不敢跑测试。 这种感觉他太熟悉了,考试做完不敢翻答案、论文写完不敢查重、代码写完不敢编译。越在意的东西越不敢验证。 他站起来,去厨房接了杯水,喝了一口,又倒掉了。走回来坐下。 把bugkiller的原始码丟进了bugkiller。用自己做的刀,切自己做的菜。 运行。 进度条开始走。12%...31%... 他发现自己在屏住呼吸。 47%...68%...89%... 进度条走完。 二十三个bug。 屏幕上二十三条红色高亮。日均十二小时,视界辅助,身体巔峰。 二十三个。 他盯著那片红看了几秒,然后开了视界,扫了一遍同样的代码。 二十五个。 bugkiller比视界少了两个。他把两份结果拉到一起对了一遍,大部分重合。 一周。一个人。做出来的东西在他自己的代码上已经接近金手指的水平。 韩路一用debug修復確认修復路径,花两个小时把所有的bug全部干掉。 更新不易,记得分享101看书网 然后让bugkiller重新扫了一遍。 屏幕上弹出一行绿色的字。 0 issues found. 他靠在椅背上,盯著那个零看了好一会儿。 把原型打包,发给了苏念念。“一周,没食言。” 五分钟后苏念念炸了。 “我试了!!!把我们组上周的一段代码丟进去扫了一下,找到了八个问题!!其中三个是我们已经知道的,另外五个是我们不知道的!!而且它给的影响评估特別直观,“该bug在高並发场景下有约15%概率触发服务降级”,运营和產品也能看懂!!不只是给开发看的!!!” “冷静。” “我不冷静!!市面上没有一款工具能做到“影响评估”这个层级!!所有竞品都停在“找到bug”这一步,你直接跳到了“找到bug+告诉你后果+教你怎么修”!!这不是优化!这是降维打击!!” “用户测试的事交给我。”苏念念最后发了一条,“我找几个做开发的朋友试一试,收集反馈。你继续叠代。” “行。” 韩路一放下手机,翻出微信通讯录,找到顾司玥。 两人的聊天记录还停在上次她说“快闪大概率会走破產重组”。之后就没再联繫过。 韩路一想了想,打了一行字:“顾律师,方便约个时间吗?有个新的法律諮询。” 晚上十一点多了。他不指望今晚有回覆。 过了一会,顾司玥回復了:“什么方向?” “软体著作权註册,可能还涉及商標。” “明天下午两点来我办公室。新case按正常諮询费收。” 明天周六。韩路一看了一眼这条消息,晚上十一点秒回、周六还约客户,这人是不下班的吗。 韩路一回了个“好”。 顿了一下,又加了一句:“这次不是举报別人了,是保护自己的东西。” 顾司玥过了几秒才回:“那更要趁早。明天见。” —— 第二天下午两点,博衡律师事务所。 周六的律所比上次来安静一些,走廊里大半的办公室都黑著灯。前台把他领到会议室,路过走廊的时候经过一间门没关严的办公室,里面桌上摆著三杯咖啡,两杯空了,第三杯喝了一半。窗台角落有一盆绿萝,叶子耷拉著,土干得发白。衣架上掛著两件备用衬衫,一黑一白。 门上的铭牌写著“顾司玥高级合伙人”。 这人住在办公室里吗? 顾司玥已经在会议室等著了。笔记本摊开,笔帽拧开。 “说。” 韩路一花了三分钟把bugkiller介绍了一遍,做什么、怎么做、数据从哪来、现在到什么阶段。只说產品和技术,不提视界。 顾司玥听完没评价,直接进入法律盘问。 “软体著作权註册了吗?” “没有。” “代码用到前东家的ip了吗?” “没有。” “商標查过吗?” “没有。” 连续三个“没有”。顾司玥的笔顿了一下,抬头看了他一眼。 “你倒是什么都没做。” “所以才来找你。” 顾司玥没接这句话,低头在本子上快速写了几行。 “著作权我让助理今天就开始走流程。商標查重同步做,如果没有撞车的一周內提交。”她写完一页翻过去,“你的代码仓库在哪个平台?” “github,私有仓库。” “好。原始码文档和软体功能说明整理一份发我邮箱,越快越好。” 韩路一点头。 顾司玥继续往下走流程,忽然停了一下。 “你原来公司有竞业协议吗?” 韩路一愣了一秒。“有。但签离职协议的时候hr说是標准流程,不会真启动。” 顾司玥的笔停了。 她抬起头,看著韩路一的眼神变了,从“走流程”切换到了“审视”。 “协议在手上吗?” “在家里。” “拍给我看看。” “应该不会有问题吧?hr说,” “hr说的不算。”顾司玥打断了他,语气没变重,但每个字都咬得很清楚,“白纸黑字写的才算。你做的產品叫“ai代码审查工具”,你前东家是科技公司,如果竞业条款里有“人工智慧”或“软体开发工具”这几个字,你现在做的每一件事都可能在踩线。” 办公室安静了两秒。 韩路一没接话。他脑子里快速过了一遍那份离职协议,签字的时候扫了一眼,確实有竞业条款,当时没细看。hr说不会启动,他就信了。 “回去就拍给你。”他说。 顾司玥“嗯”了一声,低头继续写。 韩路一出了会议室,往电梯走。又经过那间门没关严的办公室,余光扫到角落的绿萝,叶子耷拉在那里。 他脚步顿了一下,没停。 出了大楼,他翻出手机又看了一眼备忘录。 不会真启动的吧。 他把手机揣回口袋,加快了脚步。 第十五章 深夜的拍门声 晚上十点四十。 竞业协议已经发给顾司玥了,她还没有回覆。 韩路一坐在电脑前写代码。 窗外很安静。整栋楼六层,这个时间大部分人都睡了。 屏幕上的光照著他的脸,手指在键盘上敲出有节奏的声响。 然后他听到了—— 楼道里有动静。 是拍门声。 很重,很急,带著某种不耐烦的力道。 “砰砰砰,” 韩路一的手指停了。 拍门声又响了一轮,然后有一个男人的声音,含混不清,带著明显的酒气。 “开门!我就看看朵朵!你凭什么不让我看自己的闺女!” 韩路一站了起来。 隔壁。501。林晚晴家。 他打开了视界。 50米的感知范围瞬间铺开。整栋楼的数据像半透明的全息图一样叠在他的视野里,但他只关注一个方向,一墙之隔的501室。 两个人。 一个在门外,一个在门內。 门外的人情绪面板亮成了红色,愤怒、焦躁、酒精影响。 门內的人,林晚晴,情绪面板是深蓝色,標籤写著:恐惧(隱藏:强撑镇定)。 门內还有第三个数据信號。林朵朵。情绪標籤只有一个字:怕。 韩路一走到自己家门口,拉开了防盗门。 楼道的声控灯被拍门声震亮了。昏黄的灯光下,一个男人站在501门前。 身高大概一米七五,体格偏壮,穿一件皱巴巴的深色夹克,头髮乱糟糟的,整个人散发著浓重的酒气。他一只手撑在门框上,另一只手还在拍门。 林晚晴打开了一条门缝,人挡在中间。她穿著家居服,头髮散著,脸色很白。 “许嘉铭,你喝了酒,明天再说。”她的声音在发抖,但还在努力保持平稳。 “什么明天再说!你躲了我两个月了!我就看一眼朵朵怎么了?我是她爸!” “你现在这个样子看什么看?朵朵已经睡了。” “那我等她醒,” “你走。” 许嘉铭往前逼了半步,手掌拍在门板上。林晚晴本能地往后缩了一下,但没有关门,门被他的脚卡住了。 韩路一走过去了。 他的脚步声让许嘉铭转过了头。 视界面板在韩路一眼前弹开了这个男人的信息。 【许嘉铭| 35岁|情绪:愤怒(隱藏:心虚、酒精影响|血液酒精浓度约0.14%)】 【关係標籤:林晚晴前夫|离婚时间:2024年8月】 【warning:有轻微暴力倾向|近期情绪不稳定】 轻微暴力倾向。 韩路一把这条信息记住了。他的表情没变,不紧不慢地走到楼道中间,站在两家门之间的位置。 “朋友,大半夜的,影响邻居休息了。” 许嘉铭打量了他一下。“你谁啊?” “隔壁502的。”韩路一指了指自己家门口。 “关你什么事?我来看我闺女。” “看闺女是好事。但现在快十二点了,孩子也睡了。”韩路一说著掏出了手机,屏幕亮著,“不如这样,我看你喝了不少,要不我帮你打个车?” 他晃了晃手机,然后声音不大不小地加了一句:“车打不到的话,我也可以帮你叫110。你选一个。” 这句话像一桶冷水。 许嘉铭的脸色变了。酒精让他衝动,但没让他完全失去理智。他看了看韩路一手里的手机,又看了看韩路一,一米八五,虽然瘦但比他高半个头,站在那里不慌不忙,眼神平静得像一面湖。 不知道为什么,那眼神好像看穿了他的色厉內荏。 “你少管閒事。”许嘉铭低声骂了一句,但脚从门缝里收回来了。 “好走。”韩路一说。 许嘉铭瞪了他一眼,又瞪了门缝里的林晚晴一眼,最后骂骂咧咧地转身下楼了。脚步声踩在楼梯上,一层一层往下,越来越远。 楼道里安静下来。声控灯啪地灭了。 黑暗中,韩路一听到了一声很轻的喘息。 他打开手机的手电筒,照了一下。 林晚晴靠在门框上,双手抱著自己的胳膊。她整个人在发抖。 “他走了。”韩路一说。 林晚晴点了点头,但没说话。过了好几秒才慢慢鬆开一直抱紧自己的双手。 门缝里,一双小手扒著门板的边缘,然后林朵朵的脸从里面探出来了。眼睛红红的,脸上有泪痕。 “路一哥哥……”她的声音很小,“我怕爸爸。” 韩路一蹲了下来。 “没事了小朵。他走了。”他的声音放得很轻很轻,“你保护妈妈了吗?” 林朵朵使劲点头。 “那你很厉害。” 林朵朵的嘴瘪了一下,又要哭,但忍住了。 林晚晴深吸了一口气,蹲下来把女儿抱进怀里。过了好一会儿,她抬头看著韩路一。 “谢谢你。” 三个字说得很吃力。 韩路一站起来:“没事,林姐。他以后要是再来,你直接叫我。” “不用的……不用麻烦你,” “不麻烦。”韩路一打断她,“我每天都在家写代码,一墙之隔,有什么动静我听得到。” 林晚晴看了他几秒。 她的眼眶已经红了,但没有哭。 “你先把门锁好。”韩路一上前一步,看了一眼501的防盗门,“这个锁太老了,建议换一个c级锁芯,防技术开锁的那种。明天我帮你看看。” “我……好。谢谢。” 林晚晴把林朵朵抱进屋里,在门口又回了一次头。 “韩路一。”她顿了一下,“今天真的谢谢你。” “早点休息,林姐。” 门关上了。锁扣了两道。 楼道重新暗下来。韩路一站了两秒,確认隔壁没有其他动静,转身回了自己家。 关上门之后,他靠在门板上,开了视界。 隔壁的数据面板透过墙壁隱约浮现。 【林晚晴|好感度:42→58↑16 |情绪:感激(隱藏:安全感)|当前状態:安抚女儿中】 好感度从42跳到了58。涨了16点。 他不是有意去看这个数字的。只是视界一开,50米范围內的数据自动推送。他没办法只选择看一部分。 韩路一把注意力集中在另一个信息上—— 那个从第一次见面时灰著的,標註为“待解锁”的bug標籤。 现在它亮了。 lv.2的视界,终於让这个bug的详情完整展开了。 【bug:家庭纠纷(严重)】 【详情:林晚晴前夫许嘉铭正在筹备爭夺抚养权诉讼】 【证据收集状態:许嘉铭方已委託律师,以“母亲经济能力不足、居住环境不稳定”为由准备起诉】 【威胁等级:高】 【当前林晚晴应对状態:无法律支持,未諮询专业律师,处於被动防守】 【debug修復建议:需专业家事律师介入,提前准备应对方案】 “母亲经济能力不足、居住环境不稳定。” 初二那年,他也听过差不多的话。他爸打电话来,说“你一个人带孩子太辛苦了”,意思是想爭抚养权。他妈掛了电话,在阳台站了很久,以为他没看到。 那年他十三岁。林朵朵今年五岁。 debug修復建议:需专业家事律师介入。他脑子里浮出了一个名字。 顾司玥。 顾司玥做的是智慧財產权诉讼,不是家事方向。但她在博衡,內部肯定有做家事的律师。 不过,他跟林晚晴就是邻居,说上话还不到一个月。赶走一个醉汉是一回事,插手人家的抚养权官司是另一回事。 韩路一关掉了视界。 他走回电脑前坐下。屏幕还亮著,光標在他刚才离开时的那一行闪烁。 他看了两秒钟代码,没继续写。 拿起手机,发现顾司玥在十分钟之前回了条消息,“竞业协议收到了。” 韩路一想了想,把备註从“顾律师”改成了“法律顾问-顾律师”。 然后关了电脑,洗了把脸,上床。 隔壁很安静。林朵朵大概已经被哄睡了。 第十六章 律师函 bugkiller的0.2版本打磨了一周多。 苏念念找几个开发朋友试用之后,给了他一份十九条的反馈。他改了七条半,第八条改到一半觉得方案不对,推翻重来,到今天还差一个收尾。 林晚晴那边没再出过事。偶尔在楼道碰见,她点个头就错身过去,有点像不知道该怎么跟他相处。林朵朵倒是每次都要喊一声“路一哥哥”,然后被妈妈轻轻拉走。 顾司玥那边发邮件说著作权登记在走流程,商標查重同步推进,“bugkiller”暂时没被註册过。 四月六號,周一上午。 韩路一坐在电脑前,手机开著语音通话,跟苏念念討论新版本的叠代方向。窗外天气不错,小区里有人在遛狗,楼下不知从哪飘上来一股葱油饼的香味。 “精度得再提一提,”苏念念的声音从手机里传出来,“现在体感误报大概百分之七八,用户觉得还有噪音。降到五以下才能真正进入工作流。” “我知道,单条误报可以標忽略、已经加上了,真压到五以下至少还得再训一版,成本有点高,” 门铃响了。 韩路一看了一眼门的方向。“有人敲门,等我一下啊。” 他起身开门,是快递员,手里有一个ems信封。一开门,电子签收板就递了过来。 他签了字,接过信封,快递员已经在按隔壁的门铃了。 韩路一关上门,走回电脑桌前坐下。 发件人:鼎盛数字科技集团有限公司法务部。 收件人:韩路一 手指沿封口撕开。 一份文件。一页纸。抬头印著鼎盛集团的logo,標题—— 《竞业限制义务提醒函》 內容很简短:提醒韩路一先生,您於2026年2月签署的离职协议中包含竞业限制条款,期限十二个月,范围涵盖“人工智慧、代码审查、软体开发工具及相关领域”。如贵方已在上述限制领域內从事经营活动,请立即停止並联繫我司法务部协商处理。 措辞挺客气的,但“请立即停止”那几个字,一个字比一个字沉。 文件一份离职协议复印件。竞业条款所在的那一段被人用黄色萤光笔標了出来。白纸上一道刺眼的黄。 韩路一盯著那片萤光色看了两秒。 签字的时候他扫过一眼。张薇说“標准流程,不会真启动的”,他就翻过去了。 然后他想到了一件事。 著作权登记是公开信息。国家版权局的系统,任何人都能查。 这边刚登记完,警告信就到了。 (请记住 101 看书网超好用,????????????.??????等你读 网站,观看最快的章节更新) 时间点也太巧了。 韩路一打开视界。 提醒函的纸面上浮出一层半透明的数据图层,字符流动了两秒,稳定下来,正文之外多出一条信息: 【文件发起链条:陈博文(建议)→法务部合规专员李洋(执行)→审批人:王志远(vp)】 看来不是法务部例行排查。 韩路一关掉视界。精力值扣了12点,不多,一张纸没什么好扫的。但上面的信息够了。看来陈博文不是想把他挤走就结束了。 “……路一?怎么了?”苏念念的声音还在手机里。 “念念,我有点事,晚点聊。” “哦好,” 他坐回椅子上,把提醒函和离职协议复印件並排摆在桌上。萤光笔標出的那段话又看了一遍—— “乙方离职后十二个月內,不得从事与本公司主营业务相关的人工智慧、数据分析、软体开发工具及相关领域的工作,包括但不限於自主经营、受僱於竞爭对手或为竞爭对手提供諮询服务。” 人工智慧。软体开发工具。 如果严格来说,bugkiller是踩线的,但是这也太不公平了。 顾司玥说过的那句话浮上来,“hr说的不算。白纸黑字写的才算。” 他手指无意识地敲了两下桌面。 手机亮了。陌生號码。 他看了两秒,接了。 “您好,请问是韩路一韩先生吗?”是个职业腔女声,笑意都镶在音调里。 “是的,请问你是哪位?” “韩先生您好!我是锐才猎头的linda,冒昧打扰。我这边有一个算法总监的机会想跟您简单聊聊,年薪、奖金加期权,总包一百二十万以上,团队十五人。客户是头部网际网路公司,名字不方便直说,但您肯定知道。” “我跟鼎盛有竞业,你们客户介意吗?” “没关係的韩先生,客户和您上家不算同业,这类情况他们法务常处理。jd我发您看看?” 韩路一靠回椅背。 视线落在桌上那封提醒函上。 一百二十万。鼎盛给他六十五万。將近翻了一倍。去大厂当总监,竞业的事有公司法务扛,不像现在一个人创业,对面来一封信就能把你钉在墙上。 一封信告诉他,你不许做。 一个电话告诉他,你可以不做。 这两件事中间只隔了十五分钟。 “发我吧。”他说。 “当然!我加您微信!” 掛了电话。韩路一把手机放在桌上,屏幕正好挨著那封提醒函。一个发光一个不发光,並排摆著。 微信弹出好友申请。他通过了,对方秒发一份pdf。 打开扫了一眼。技术栈熟悉,团队规模合適,核心kpi是推荐系统优化,跟他在鼎盛乾的差不多,换了个壳换了个级別。年薪加期权,三年能拿到手的数字他心算了一下,不算少。 他手指在屏幕上停了两秒。 收藏,然后回了个“谢谢”。 打开电脑。 苏念念半小时前发来的v0.1內测反馈匯总。十九条用户意见,每一条都標了优先级和建议方案。 他往下翻了几屏。 “#7误报率降到5%以下才能进入工作流,目前体感约8%,建议增加“忽略”功能並记录用户忽略模式用於叠代。” “#14 cli界面够了但vscode插件是刚需,看看能不能v0.3做?” #14那行她又加了一条备註:“这条我问了五个人,四个说“有插件我天天用,没插件我偶尔用”。” 他盯著看了一会儿。 桌上的提醒函还摊著。他没收,也没再看。 又打开微信翻起了通讯录。 “法律顾问-顾律师”。 之前存这个备註的时候,想的是帮林晚晴打官司。 现在第一个用上的倒是他自己。 “顾律师,方便吗?有个急事。” 一个语音打了过来,那边有翻文件的声音。 “说。” “鼎盛法务给我发了一封竞业限制提醒函。今天上午收到的。” 安静了三秒。韩路一以为信號不好,刚要再说一遍,顾司玥开口了。 “带著你的离职协议来一趟。”顾司玥说。“当面说。” 掛了。 韩路一看著手机屏幕。通话时长四十七秒。 他愣了一会。 窗外遛狗的人走了第二圈。桌上的提醒函安静地躺著,黄色萤光笔標出的那段话在下午的光线里泛著一层薄亮。 韩路一收起文件,起身去换衣服。 第十七章 她在第五层 和合大厦,十九楼,博衡律师事务所。 这是韩路一第三次来博衡。 上一次是两周前,bugkiller刚跑通,他来做著作权和商標。那天他坐在访客椅上,觉得自己在做一件很酷的事。 这次来,他手里多了一封ems。 前台认出了他。“顾律师在办公室,我领您过去。” 他敲了一下半开的门。 顾司玥坐在桌后翻一份文件。上次隔著走廊看到的备用衬衫还在,只是换了位置。桌面上有两个空掉的咖啡杯。 “坐。”顾司玥没抬头。 韩路一坐下,把鼎盛的提醒函放在她桌上。 顾司玥看了一眼信封上的“鼎盛集团法务部”几个字,打开看了看內容。 韩路一也开了视界,看向那份文件。 法律文本上浮出一层半透明的高亮批註,像代码review里的注释。竞业条款那一段被標了红—— 【竞业限制范围条款|风险评估:存在爭议,无效概率约45%】 【原因:限制领域“人工智慧、数据分析、软体开发工具及相关领域”,范围偏宽但未明显超出行业惯例】 【法律依据:《劳动合同法》第24条|司法实践中类似条款裁判结果不一,取决於具体举证】 韩路一皱了皱眉头。四五成的概率,跟拋硬幣差不多。打官司的话,不好说。 他刚要开口。 顾司玥拉开了右手边的抽屉。 拿出一个蓝色文件夹,不厚,推到他面前。 “先看看这个。” 韩路一打开文件夹。 三份文件。按时间顺序排好,每份用回形针別著。 第一份。 催收函复印件,附ems签收回执。 【致:鼎盛数字科技集团有限公司人力资源部张薇女士 本所受韩路一先生委託,就贵司与委託人签订之竞业限制协议事宜致函如下:委託人已於2026年2月26日正式离职,依据双方协议约定,贵司应自离职之日起按月支付竞业限制经济补偿金。截至本函发出之日,首期补偿金已逾期,委託人尚未收到任何款项。 特此函告,请贵司於收函后五个工作日內依约履行补偿金支付义务。逾期未回復或未支付的,委託人將视为贵司明確拒绝履行补偿义务,並依法主张相应权利。 博衡律师事务所顾司玥律师 2026年3月27日】 周五,他算了一下,那天是他离职整四周。 韩路一翻到第二份。 一封邮件的列印件。发件人:张薇。收件人:顾司玥。时间:3月27日,15:17。 【顾律师您好: 经核实,韩路一先生的岗位级別(p7)不在竞业限制补偿金髮放范围內。如有其他疑问,请联繫我司法务部。 此致 张薇 鼎盛集团hrbp】 韩路一盯著这封邮件。 標准的hr模板。收到催收函到回復,不到半天。连法务都没抄送。对张薇来说,这大概跟回復一封考勤查询差不多。 p7嘛。不发的。流程走完了。 他翻到第三份。 竞业限制解除通知书的复印件和签收回执。 【收件人:鼎盛数字科技集团有限公司法务部。 发件人:博衡律师事务所,顾司玥律师,受韩路一先生委託。 日期:3月30日。星期一。 ……贵司人力资源部张薇女士已於2026年3月27日以书面方式明確告知委託人:其岗位级別不在竞业限制补偿金髮放范围內。贵司以实际行为明確表示不履行竞业限制协议项下支付经济补偿金之主要义务。 依据《中华人民共和国民法典》第五百六十三条第一款第二项之规定,委託人韩路一先生特此通知:解除双方竞业限制约定,自本函送达之日起生效。】 韩路一把三份文件放下了。 看向顾司玥。 “……你什么时候办的?” “你上次来的那天晚上,”顾司玥说,“把离职协议照片发给我之后。” 韩路一想起他上次来博衡做著作权諮询,走的时候顾司玥让他把离职协议拍给她看。当天晚上他发了照片,顾司玥回了一份电子委託书让他签,说“先把授权做了,后面可能用得上”。 他签了,没多想。 “你当时就知道他们不会发补偿金?” “p7,非核心岗位,標准裁员流程。”顾司玥的语气像在念结案报告。“这种级別的竞业条款,十个公司九个不实际执行。连hr自己都当走过场。” “所以催收函……” “当然不是催钱,是钓鱼。”顾司玥说。“我要的就是她这封拒绝邮件。” 韩路一没跟上。“……什么意思?” 顾司玥往椅背一靠,换了个跟客户讲案子的节奏。 “竞业限制是双务合同。你不去竞爭对手那里,公司按月给你补偿金。两边各有义务。” 韩路一点头。这部分他知道。 “正常情况下,公司连续三个月不付补偿金,劳动者可以请求解除竞业限制。这是最高院的司法解释,也是大多数人走的路。但三个月太久了,你的產品等不了三个月。” “那你怎么绕过去的?” “民法典五百六十三条。”顾司玥说。“一方明確表示不履行主要义务的,对方有权解除合同。关键词,“明確表示”。张薇那封邮件,“p7不在补偿金髮放范围內”,就是鼎盛明確表示不付钱的书面证据。拿到这个,解除权直接成立。” 韩路一回过味来了。 “催收选在周五发。这种级別的case,hr不会请示上面,当天就按流程回了。” 他顿了一下,自己接上了下一步:“不回也没关係。催收函上有回覆期限,逾期不回,” “视为拒绝。”顾司玥接过去。“五六三条照走。再不济,三个月不付款,还有司法解释兜底。” 韩路一的手指在扶手上无意识地敲了两下,这是他写代码时跑逻辑的习惯。 “那还有一种情况,”他说,“他们真的付了。” “那你先拿著钱,”顾司玥说,“竞业继续生效,但你那份协议写的限制范围是“人工智慧、数据分析、软体开发工具及相关领域”,基本把整个it行业都框进去了。这种条款拿到仲裁庭上,完全有可能认定范围过宽、部分无效。到时候再打。” 韩路一低头看著桌上那封鼎盛法务寄来的提醒函。 “如贵方已在限制领域內从事经营活动,请立即停止。” 出门前他盯著这句话坐了两分钟没动。现在再看,有点可笑。 这张纸在寄出之前就已经是废纸了。 “那鼎盛法务不知道?”韩路一把提醒函推到一边,“解除通知就在档案柜里,还发这个?” “催收函和解除通知都寄的法务部公共收件地址。p7离职员工的case,处理完就归档了。这封提醒函大概是另一个人推的,经手人未必翻过那个档案。” 韩路一点了一下头,往椅背靠了靠。 他的视线漫过办公室,落在窗台上。 绿萝。 一盆小绿萝搁在窗台边,叶子蔫巴巴的,盆里的土干得发白。比上次路过时更惨了。 “你这个绿萝,我上次来就注意到了。还有救吗?” “它不在我的业务范围內。” “倒杯水就能活。绿萝挺好养的。” 顾司玥没接话。 但她伸手拿起桌上喝剩的半杯水,倒进了花盆里。 韩路一看著水渗进乾裂的土里,安静了一会儿。 “顾律师,太感谢了。” 顾司玥看看他。“你付费了。” “可太值了。”韩路一笑了。 “著作权登记已经通过了。”顾司玥把话题拉回来。“商標查重也没衝突。法律身份没问题。” 韩路一点头。 顾司玥合上了面前的文件夹。 “但竞业是小事。” 她拿起手机,翻出一张照片,递过来。 拍的是一份內部文件。角度歪,光线不好,像是在会议室偷拍的。 鼎盛数字科技集团:《前员工竞业合规排查》。 一份名单。十几个名字。 只有一个名字是红色的。 韩路一。 “这封提醒函不是法务部例行公事。”顾司玥说。“是有人专门推动的。十几个人的排查名单,只有你被標红。” 韩路一没说话。他想到了昨天视界扫描提醒函时看到的那行数据。 【文件发起链条:陈博文(建议)→法务部合规专员李洋(执行)→审批人:王志远(vp)】 但这个他没法告诉顾司玥。 韩路一把那份报告放回桌上,离开了顾司玥的办公室。 他靠在电梯壁上,看著楼层数字一格一格往下跳。 张薇按惯例拒了催收函。解除通知寄到法务部,归了档,没人多看一眼。 但陈博文还不知道。 他拿著一把一周前就坏掉的枪,还在瞄准。 什么时候他会发现枪打不响啊? 第十八章 竞爭对手 晚上七点半。 有人敲门。 林晚晴站在外面,手里端著一个盘子。 一盘小蛋糕。奶油抹得很均匀,表面用可可粉撒出一片树叶的形状,边缘点缀著几颗草莓,全挤在一起。上面用奶油挤了两个字,“谢谢”。 林朵朵从妈妈身后探头:“路一哥哥!妈妈做的!我帮忙放了草莓!” 韩路一蹲下来看她,“草莓是你自己摆的?” “嗯!本来放了五颗,我尝了两颗,甜的。” 理直气壮,像是在匯报质检结果。 韩路一拿了一块。 “好吃。草莓放得特別好。” 林朵朵搂住妈妈的腿,仰著头说:“妈妈,路一哥哥说好吃!” 林晚晴摸了摸朵朵的头,嘴角弯了一下。 “上次的事,一直想说谢谢。”声音轻轻的,目光没怎么抬。 她眼下有一层淡淡的乌青。 林晚晴没有多待,蛋糕放在鞋柜上,拉著朵朵就走了。朵朵还在门缝里挥手:“路一哥哥晚安,” 501的门关上了。他打开了视界。 【林晚晴|情绪:疲惫(隱藏:焦虑)|核心焦虑:抚养权诉讼|当前应对状態:无法律支持】 韩路一拿出手机,翻到顾司玥的对话框。 “有个朋友可能要打抚养权官司,你那边有人能接吗?” 秒回。 “有,我们所有个合伙人专做婚家。什么情况?” 婚家。他搜了一下,婚姻家事。 “具体的等我確认了再说。对方经济条件一般,费用能不能灵活点。” “我们所里有法援名额,符合条件的话可以减免。让她先別急。” 又过了几秒,顾司玥追了一条。 “另外,你的竞业排查名单我又看了一遍。十几个人只有你被標红,不正常。还有个法律风险我在核实,確认了当面说。” 韩路一站在门口把那块蛋糕吃完了。 回到电脑前。bugkiller v0.2还差最后一步,一键修復。 思路不复杂:扫出bug之后,把上下文丟给大模型生成补丁,再用bugkiller自己扫一遍补丁代码,確保没引入新问题。检测是自己的长板,生成让大模型干,各司其职。 难点在最后一步。bugkiller得判断补丁有没有“修出新bug”,而不同框架的写法天差地別,react和vue不一样,python和go也完全不同。通过率卡在93%,苏念念要求的门槛是95%。 两个点。 又花了三个小时重写模板匹配逻辑,试了四种方案。第四种过了。 通过率95.2%。能交了。 bugkiller v0.2最终版打包完成。 新增功能两个:bug影响评估加了置信度百分比,修復建议支持一键生成代码补丁。发给苏念念。 刚发完,苏念念那边就回復了。 “发了?我马上看。” 十五分钟后,消息开始轰炸。 “v0.2比v0.1强太多了。影响评估的置信度怎么做到的?” “你別管怎么做的,先测。” 五分钟。 “上次扫出来的那五个未知bug还记得吧?我刚用v0.2一键生成补丁,五个,全过!韩路一!我感觉我成开发了!” 过了半分钟没说话。產品经理在算帐。 “韩路一,这东西以后怎么定价?” “还没想。” “赶紧想。能帮人省两周人力的工具,不愁卖的。” “你怎么还没睡?” “在测你的东西,少转移话题。定价你得上心了。” 又过了一分钟。 “我明天开始拉人,先凑20个內测用户。你做个邀请码出来。” “行。” 韩路一刚要关电脑,苏念念又发了一条。 不是关於v0.2的。是一个连结。 《ai代码审查赛道升温:又一家初创拿到天使轮》 “你看看这个。” 韩路一点开。 科技媒体的深度分析。重点提到一家叫codesafe的初创公司,刚拿到天使轮,背后投资方隱约有鼎盛关联资本的影子。创始人赵文渊,斯坦福cs博士,在谷歌呆过三年。 產品方向:ai驱动的代码审查与风险评估。 韩路一翻了翻文章的其他段落。codesafe去年十一月成立,运行了五个月,团队从三人扩到三十人。天使轮的钱够烧至少半年。 他打开视界,扫了一眼codesafe的官网。 【codesafe | ai代码审查】 【核心路线:大模型+大数据(重资產)】 【公测日期:4月27日】 大概三周后。 精力扣了8点。 面板底部还掛著一行小字,投资链条的末端。 【天使轮投资链条:鼎恆创投(lp含鼎盛集团)→个人跟投:王志远】 王志远。 韩路一盯著这三个字看了两秒。快闪的天使轮也有他,张浩然说的那个壳公司。现在又是他。 一个鼎盛的vp,到处投初创公司,挺忙的。 他关掉视界。 苏念念的第二条消息跟了上来。 “这也太巧了吧?” “看了。三十个人,有钱有团队。” “慌不慌?” “说不慌是假的。但他们走大模型重资產,我们走轻量,路线不一样。重的烧钱快、叠代慢,轻的反过来。短期他们功能可能比我们全,但跑长线我们有机会。” “机会有多大?” “不知道。但他们现在还没產品出来,我们v0.2今晚跑通了。先把內测做起来吧,有用户口碑才有得聊。” 苏念念过了一会儿才回。 “行。邀请码明天给我,我先拉人。” 关上电脑,拿起手机,刷了一会技术论坛。 《推荐系统架构改造的七个经典陷阱》阅读量破了一万二。私信列表里多了几条,有的请教,有的约稿,还有一条来自一个他认识的id,鼎盛gg数据组的前同事,跟他同期入职。 “大神你好,我是某公司的后端开发,你写的第三个陷阱我们正在踩。方便私聊吗?” 韩路一没回。这人用的是鼎盛工作邮箱註册的论坛帐號,说明他还不知道nullpointer是谁。但一个鼎盛的人主动找nullpointer求助…… 博客下面最高赞的评论写著:“nullpointer到底什么来头?这种架构级別的分析不像普通开发者。” 404群也在炸。马小飞丟了条连结,《鼎盛数字宣布旗下推荐系统全面升级,下周起覆盖全线短视频及电商应用》。 马小飞:“牛逼啊,全量上线。你们说会不会崩?” 张浩然:“系统改造两个月就敢全量,你猜呢。” 韩路一打了几个字:“不是会不会。是什么时候。” 马小飞:“???你这么確定?” 马小飞:“那陈博文那小子不是完蛋了?” 韩路一没再回。他想起之前视界扫描的d-评级,140个bug,峰值延迟飆升300%。 全量上线之后,撑不过72小时。 第十九章 我是预言家 鼎盛数字推荐系统全量上线了。 韩路一刷到微博热搜的时候是下午三点。#鼎盛推荐系统抽风#,排第十七。 点进去,画风很统一。 “给我推婴儿车。我二十三,单身,养了条狗。” “我的健身帐號刷出来全是保健品和助听器。” “我看了一上午美食视频,首页给我推了个殯葬服务优惠。鼎盛大概觉得我吃太多了,提前帮我安排后事。” 评论区充满了快活的空气。 有人总结:“鼎盛的“猜你喜欢”应该改名“猜你是谁”,连我是谁都没搞清楚就开始猜了。” 韩路一没笑。 態规则引擎本身不至於这么离谱,推得不准是正常的,但推得这么驴唇不对马嘴,说明数据管道出了问题。他一行一行写出来的特徵提取模块被砍掉之后,旧的用户画像格式和新引擎之间没人做適配,输入全是乱的。垃圾进,垃圾出。 推婴儿车不算什么。等数据管道的缓衝区吃满,后面的事就不好笑了。 第二天上午,微博上的吐槽变了味,热搜也衝到了第三。 最高赞:“打开鼎盛买菜app,给我推了一屏幕情趣用品,我妈就站在旁边。我现在怎么跟她解释啊?” 有人发:“我在深圳,“猜你喜欢”给我推了一整页哈尔滨本地火锅店。问了个哈尔滨的哥们,他那边全是深圳奶茶店。我俩换號了?” 有人跟:“不止你们。我和我同事的推荐页一模一样。连顺序都一样。” 技术论坛这边也炸了。 一个id叫“架构老狗”的资深开发者发了长帖: “说句不好听的,这个推荐系统的改造路线非常眼熟。特徵提取从动態权重退回静態规则,多模態融合模块砍得只剩文本维度,nullpointer上个月那篇《七个经典陷阱》,第三、第五、第七个,鼎盛全踩了。建议写个续集:《七个陷阱实战教程,由某大厂倾情演绎》。” 两小时一百三十多赞。 韩路一看了看自己那篇博客的阅读量。一万八。 窗外的天空灰得像没校色的显示器。雨还没下出来,空气闷得发黏。 还没人意识到真正的问题有多大。 到了晚上十一点半。 韩路一睡前又刷了一眼微博。 掛了两天的话题#鼎盛推荐系统崩了#,热度已经下去了。 一个新的话题,#鼎盛崩了#,衝到了热搜第一。 他点进去。二十分钟前,鼎盛系三款核心app集体闪退,用户打开就白屏。 推荐系统的崩溃没有触发熔断。坏掉的模块像传染病一样顺著调用链往上爬,拖垮了依赖它的內容分发、搜索、首页加载,最后整条链路全死了。 十一点十五分鼎盛发了紧急公告。十一点四十分,app陆续恢復上线,他们手动把推荐系统整个切掉了。 微博上有人贴了恢復后的截图。首页乾乾净净,没有“猜你喜欢”,没有个性化推荐,没有千人千面。就一个光禿禿的货架。 “这是2015年的app吧?” “鼎盛的推荐系统呢?去哪了?” “切了。不切整个app都用不了,你选哪个?” 韩路一打开视界。 【事件性质:系统级故障(无熔断→全链路雪崩)】 【根因:画像格式不適配→解析异常堆积→內存泄漏触发oom→数据管道断裂→ 23%用户画像错乱→推荐模块崩溃未熔断→级联击穿全链路】 【影响范围:宕机期间全量用户(峰值约1200万在线),当前降级运行中】 【当前状態:手动切断推荐模块,app降级运行】 【预测恢復周期:版本回退至原架构,约14天】 跟他的判断一模一样。 三月中旬他扫那个外包需求时看到的d-评级,一百四十个bug,就指向这个结局。当时看到的是七十二小时。 从周一上午全量上线到周二晚上全线崩溃,还不到四十八小时。 比原本预估的还快了一天。 …… 天亮之后的事,像多米诺骨牌。 有人翻出了韩路一一个月前那篇《推荐系统架构改造的七个经典陷阱》,发了一条帖子—— “兄弟们!nullpointer是预言家!一个月前精准描述了鼎盛今天的崩溃路径,七个陷阱全踩了!” “什么预言家,是重生者!” “不是全踩。我数了数,至少五个。” “你数错了。第二个和第六个也中了,只是症状还没完全暴露。” “所以是七个全踩?” “七杀。” 帖子被版主置顶。博客阅读量开始飆。中午两万九。下午四万二。晚上破六万。技术媒体引用,大厂群截图传播,连几个头部科技公眾號都转了。 404寢室群里也在討论。 马小飞丟了条连结进来:“你们看了吗这个nullpointer?一个月前写的文章,七个陷阱鼎盛全踩了。这人也太牛了吧。” 张浩然:“技术圈都在转。” 马小飞:“你们说这人会不会就是鼎盛內部的?不然怎么写得这么准?” 没人接话。 过了几秒,韩路一打了一句:“是我写的。” 马小飞:“???” 张浩然:“nullpointer是你?” “嗯。別往外说。” 马小飞发了条语音,韩路一没点开都知道他在喊什么。 张浩然:“知道了。” 下午,討论从“鼎盛系统崩了”升级到了“谁的锅”。有自媒体把时间线整理出来,鼎盛年初裁员,核心算法团队换血,新团队全面改造系统架构,两个月后全量上线,两天崩溃。配了一句:“教科书级別的管理灾难。” 评论区有人说了一句:“被裁的那个核心开发叫什么来著?” 没人接话。帖子的瀏览量继续在涨。 苏念念在微信上转了这条给他:“你之前做的不就是推荐系统吗?这是不是你们组的?” 韩路一回了个“嗯”。 他关掉论坛,切回代码编辑器。內测组反馈积了一堆,最集中的问题是误报率,v0.2降到了7.8%,苏念念標的目標是5%以下。二十三个內测用户里四个人提了同一条:误报太多,影响工作流。 该干嘛干嘛。 晚饭是冰箱里的速冻水饺,煮了十个,吃了八个,剩两个烂了倒掉。 洗完碗坐回电脑前,九点半。 微信弹了一条。赵启明。 “韩哥,睡了吗?” 韩路一回:“没,怎么了小明” “今天加班到现在刚回来,跟你说个事。 “下午开了復盘会,陈博文全程在甩锅。 “说系统崩溃的根因是“前任核心开发者遗留的架构缺陷”。 “ppt上你的名字出现了四次。什么“过度耦合的动態权重设计导致系统脆弱性”,什么“缺乏文档交接”。二十三页ppt,有四页在说你。 “放屁啊,那套动態权重是你写的,跑了三年多没出过事,他一上来全改崩了。 “文档我也写了啊,他看都没看。” 韩路一看著这行字,没动。 过了几秒。赵启明又发了一条。 “我在会上差点当场懟他。忍住了,简歷还没投出去呢。” “现在这环境,就当日结工资了。先把自己的事安排好。” “我有数。就是太他妈噁心了,跟你说一声。” “嗯,知道了。谢谢【抱拳】” 赵启明发了个嘆气的表情包。 “行了韩哥,你早点睡。我也扛不住了” 韩路一放下手机。屏幕暗了几秒又亮了。是顾司玥。 “鼎盛的事你看到了吧。小心被牵连,有情况隨时找我。” 第二十章 装弹 早上七点闹钟响了。韩路一拿起手机。赵启明凌晨三点发来消息。十二张照片,手机拍的,陈博文的復盘ppt,二十三页。“韩哥,偷拍的,你留著。” 核心论点就三句话。 一、原架构设计者留下了严重的技术债务,包括过度耦合的动態权重系统和缺乏冗余设计的数据管道。 二、团队在继承和优化过程中,遭遇不可预见的系统性风险。 三、建议对前员工遗留代码进行全面审计,明確责任归属。 他翻完十二张截图,把这事在404群里说了一下。 马小飞:“这他妈是把锅焊在老韩头上啊。” 张浩然:“这手段很恶毒啊。如果不了解真实情况,可能真有人会信。” “第三条最毒。”张浩然说。“明確责任归属,先定性,后面想怎么追都行。” 马小飞:“还有个更噁心的。今天凌晨,某科技自媒体发了篇文章,” 他截了图丟群里。 標题:《被裁员工的代码炸了老东家?一场推荐系统崩溃背后的人事博弈》 马小飞:“我问了渠道,这篇不是编辑部自发的。走投放。有人买单。” 张浩然:“ppt对內,文章对外。內外夹击。標准公关打法。” 韩路一打字:“里面提我名字了吗?” 马小飞:“没直接点名。写的是“一位在鼎盛工作五年、负责核心推荐系统的算法工程师”。稍微查一下就能对上。” “而且,”马小飞又发了一条。“这篇文章故意把nullpointer的博客拎出来一起讲了。原话:“一个月前精准预测崩溃路径的匿名博主nullpointer是否就是这位前员工?”” 群里没人说话。 韩路一把手机扣在床上,去卫生间洗了把脸。水龙头开了很久,凉水从指缝往下淌。 回来拿起手机。马小飞问:“老韩,什么打算?” “下午去见律师。” 马小飞:“我先帮你懟回去?咱不能吃这个哑巴亏。” “別。”韩路一打字。“你一出手,人家顺著你查到我,正中下怀。” 马小飞:“……行吧。” …… 下午两点。博衡律师事务所。 前台已经认识他了。“韩先生这边请。” 顾司玥在办公室等他。 窗台上那盆绿萝比上次好了一点,新抽了两片小叶子,土是湿的。 桌上摊著三份文件,按顺序排好。她面前摆了两杯咖啡,推了一杯到对面。 “坐。咖啡。” 韩路一坐下,端起咖啡。 顾司玥把一张纸推过来。上面画了三个圆,分別標著,竞业、归责、职务作品。前两个用红线连著,第三个单独在下面,画了个大大的感嘆號。 “你看到那篇自媒体文章了?” “看了。” “他们在打组合拳。”顾司玥拿起笔,点了点前两个圆。“竞业是锁链,归责是攻击。他们的算盘是,你站出来自辩,就暴露bugkiller跟鼎盛业务的关联性,他们就用竞业协议攻击你。你不回应,敘事权在他们手里。” “挺聪明的。”韩路一说。 “对。但他们漏算了一步。” “竞业已经没有了。” 顾司玥点头。 她在第一个圆上打了个叉。 “竞业没了,锁链就断了。你隨时可以站出来说话。但我建议先不动。” “为什么?” “主动澄清等於承认你是当事人。一旦开口,对方就拿到了互动的机会,你说什么他们都能接著打。先手在我们这边,没必要让出去。” “那你的建议是……?” “等。收集证据。归责文章的投放记录、传播路径、跟陈博文的关联,这些都是名誉侵权的子弹。现在只需要装弹,不用发射。” 韩路一喝了口咖啡。 “那第三个圆是什么?” 顾司玥停了一下。她把剩下那份文件推过来。封面是《中华人民共和国著作权法》,第十八条被黄色萤光笔標了出来。 “上次我说有个法律风险在核实。就是这个。” 韩路一等她说。 “职务作品。” 顾司玥翻开那一页。 “著作权法第十八条。员工离职一年內完成的、跟原岗位主要职责相关的作品,单位有权主张属於职务作品。” 她的手指点在那行字上。 “竞业是“不让你做”。职务作品是“做了也是我的”。” “如果鼎盛主张成功,就不是赔钱的问题了。你的新產品,包括代码、模型、数据、商標,全部归属权归对方。” 韩路一放下咖啡杯。 “我能证明代码是离职后写的。代码提交记录,云平台帐单,都有时间戳。” “光证明时间不够。”顾司玥摇头。“构思、设计、实现,全链条都要能证明跟鼎盛无关。法院看的是,你离开鼎盛的时候,脑子里有没有带走东西。” 她翻到下一页,一张清单。 “git提交时间线、开发环境日誌、云平台帐单、设计文档版本歷史,这些全都要规范化存档。这些是將来上庭的弹药。” 顾司玥翻回著作权登记文件,指了一行。 “你的核心模块描述里写了“bug模式知识库”。这个知识库里的模式,有多少来自你在鼎盛的项目经验?” 韩路一沉默了两秒。“不少。” “经验归你,不归公司。这个官司他们打不贏。”顾司玥合上文件。“但打不贏不等於不会打。拖你进仲裁,光举证就要几个月。你现在有几个月可以浪费?” 韩路一没接话。 “陈博文还沉浸在竞业和归责里。但等他发现竞业走不通,会找新路。职务作品就是最顺手的那条。” “窗口多长?” “不好说。一到两个月。够你做准备了。” 韩路一站起来。 “回去把开发记录整理一遍。git log、云帐单、笔记、草稿、每一版设计文档。能证明bugkiller从第一行代码到现在,每一步都跟鼎盛无关。” “知道了。” 顾司玥送他走到门口。 “对了,你之前问的抚养权。情况確认了吗?” “確认了。对方前夫要爭抚养权,她没请律师。” “让她联繫沈予微。”顾司玥从桌上翻出一张名片递过来。“家事诉讼她比我专业,我来盯策略。费用的事我跟予微说。” 韩路一接过名片。“谢了。” “给我的客户牵线而已。” 韩路一走进电梯。门关上之前,走廊尽头传来她的声音,在打电话:“予微,我手上有个家事case……” 回到家。晚上八点。 韩路一打开电脑,在加密网盘里建了个文件夹。 evidence_chain。 git提交日誌导出、云平台帐单、每一版设计文档的修改记录、域名註册信息、苏念念发的每一条產品反馈,全部按时间线归档,同步到云端。 手机亮了。苏念念。 “內测数据出来了。二十三个人里十九个人用了超过五次。有三个主动问我什么时候出付费版。” 苏念念又发了一条。“有个內测用户是个小公司cto,今天跟我聊了半小时。他想把bugkiller接进他们的ci流程,每次提交自动跑一遍。问能不能开api。” “现在没有。但不难。” “我整理了一下他的需求,明天跟你对。如果这条路走通,企业客户的口子就开了。” 韩路一关掉微信,打开了技术论坛的后台。 草稿箱里躺著一篇帖子,上周写的,一直没发。 標题:《一个新產品:bugkiller》。 瀏览器另一个標籤页还开著那篇自媒体文章。標题里“前员工”三个字加了粗。 光標在“发布”上停了两秒。 第二十一章 One More Thing 草稿在论坛后台躺了四天。二十三个人的反馈磨了三轮,v0.3才算定稿。 四月二十號,周一晚上。苏念念测完最后一轮:“够了。发吧。” 韩路一打开草稿。標题还是上周写的,《一个新產品:bugkiller》。 正文改了四十分钟。开头三段纯技术,中间插了两张v0.3的扫描结果截图,脱敏过的。结尾一句话:“今天开放限量测试,50个名额。填表申请,先到先得。” 最后加了一段声明,数据来源合规,源码可审计。 发布。 发完帖他切回编辑器写v0.4。凌晨一点半,框架搭完,冰箱里最后一盒速冻水饺下了锅。煮好端到电脑前,顺手扫了一眼帖子。 內测申请表提交人数:127。 五十个名额,三个半小时,一百二十七人。 第二天上午,韩路一被手机震醒。 是苏念念。连发八条消息,前三条是“???”“你看论坛了吗”“快起来”。 他揉著眼睛打开论坛。 內测申请:638。瀏览量:12,400。回覆:289。私信:67条未读。 回苏念念:“正在看。” 韩路一靠在床头把评论区从头翻到尾。 “nullpointer做產品了???这是什么跨界打劫??” “影响评估是什么鬼,扫出bug还能告诉我上线后会死多少用户?请问这合法吗?” “nullpointer之前分析鼎盛崩溃封了神,现在把这能力做成產品。传说中的大佬下凡开店,凡人瑟瑟发抖。” 有人做了投票,“你觉得bugkiller能不能干掉市面上的代码审查工具?” 一千二百多票。67%选了“有可能”。 404群里也有未读消息。马小飞丟了一串问號过来。 “哥!你那帖子上热帖了!我朋友圈被你刷屏了!科技圈好几个大號都在转!” 张浩然冒出来:““nullpointer做產品”,脉脉热帖第三。你小心身份被猜到。” 马小飞:“我帮你宣传宣传?我现在六万粉了!” 韩路一:“不用。” 马小飞:“?” 张浩然:“nullpointer现在是匿名的。你一宣传,画像就收窄了。” 马小飞沉默了五秒,回了两个字:“忍了。” 中午。申请人数破八百。 韩路一从里面筛了第一批,五十个名额,全挑技术栈匹配度最高的。二十分钟,帐號全部开通。 下午两点。第一批內测用户的反馈开始涌进来。 论坛、微信私信、邮件,三个渠道的通知刷不完。 “扫了我们公司核心服务,找到6个我们不知道的bug,其中两个高危。影响评估说其中一个如果不修,上线一周內会影响约12万用户。我们查了一下,这个模块確实排在下周灰度。救命。” “把自己的开源项目扫了一遍。8个问题,逐个验证,全是真的。3个我知道但一直没修,5个完全不知道存在。” 韩路一一条一条回私信。回了一会,手指有点酸,去厨房接了杯水,回来继续。 “这不是代码审查工具。这是代码审查加风险预警系统。nullpointer你是不是开了天眼?” 论坛前排有一条评论引爆了討论。 “影响评估有点恐怖。它说我一个bug会导致“峰值期0.3%的订单金额计算错误”。我算了一下,日均八万单,0.3%是240单,平均客单价85,一天两万,一个月六十万。一个bug。六十万。” 底下跟了一串。 “六十万?bugkiller按这个算投入產出比,定多少钱我都买。” “你们別光说好话,说说缺点。” “缺点:名额太少了。建议nullpointer开放一万个。” 窗外黑了。他没开灯,屏幕的光映在脸上。隔壁501传来林朵朵的笑声,隱隱约约的,大概在看动画片。 论坛最新一条,“java那个我也遇到了,nullpointer回我了,说v0.4会改进。你们知道什么叫售后吗?这叫售后。” 苏念念从下午开始就在整理反馈。飞书表格,四栏,功能模块、用户原话、优先级、建议方案。到晚上七点,四十七行。 她打来电话的时候声音有点哑了。 “路一,我跟海狸科技请了两周年假。” 他正在改代码,手停在键盘上。 “你不用,” “你一个人写代码、改bug、回用户、整理反馈、写文档,你同时干几份工?我项目早被人拿走了,请假也没人管。这两周我全投bugkiller。” 韩路一没说话。 苏念念:“明天上午九点,bug café。所有內测数据发我,今晚我先看。还有,v0.4叠代方向我想好了,你先別动手,等明天碰完再说。” “我刚把v0.4的框架写完了。” 苏念念沉默了三秒。 “发我看看。” 五分钟后回了一句:“功能优先级跟我排的一模一样。” 又过了两秒,苏念念发了条语音:“写完了你不早说?我白排了一下午。” “你没问。” “明天九点。別迟到。” 晚上十一点。帖子发出二十六个小时。 申请人数:2,147。瀏览量:43,000。回覆:687。 有技术媒体编辑在评论区实名留言:“求专访nullpointer。”底下一百多条回復,排队去。 面板闪了一下。 【经验值+8 |当前:75/200】 bugkiller帮助內测用户发现並定位了多个实际bug。系统判定:批量帮助。 韩路一关掉面板,准备关电脑。 习惯性刷新了一下帖子。 回復区最顶上多了一条新评论。三分钟前。 “bugkiller的bug检测模式资料库来源存疑。建议作者公开数据来源和训练方法论,否则无法排除使用了未授权的商业数据进行训练的可能性。作为同赛道从业者,我认为数据合规是產品公信力的基础。” 帐號名:techethicswatch。 註册时间:今天。发帖数:零。回复数:零。头像是默认灰色。 唯一的操作就是这段话。措辞精准,语法工整,不像技术社区里的吐槽,像律师擬的声明。 韩路一往下看了一眼点讚列表。 第三个。 codesafe official。 codesafe的公测大概还有一周。產品还没上线,已经开始给別人的质疑帖点讚了。 韩路一把这条评论截了图,发给顾司玥。 关掉了论坛。