《首富从看见信息面板开始》 第一章 你被优化了 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点。 基础参数记完,他把视界对准了电脑屏幕。 屏幕上还开著一个开源推荐系统,他业余时间在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万|当月收入:¥8200】 韩路一差点没绷住。嫉妒他不禿。 再看张浩然。 【张浩然| 26岁|职业:某股份制银行信息技术部】 【情绪:担忧(为韩路一)】 【隱藏情绪:无(该对象情绪表里如一)】 【核心焦虑:月底房贷¥11400】 韩路一关掉视界,笑著又喝了一口。 “不说我了。”他把话题引开,“小飞,你最近在追什么选题?” 马小飞来了精神,但不是那种兴奋的精神,是咬牙切齿的精神。 “你不说我还想说呢。快闪你知道吧?那个短视频app。” “知道。” “我被那帮孙子坑了。”马小飞把啤酒瓶往桌上一顿,“坑惨了。” 韩路一夹虾的手停了一下:“怎么回事?” “上个月我接了一单推广,一个护肤品牌找我在快闪上投信息流gg。品牌方出预算,我负责內容和投放。”马小飞越说脸越黑,“我跟你讲,我把这单当翻身仗来打的。自己贴了一万二的製作费,拍了三条视频,熬了半个月。” “然后呢?” “然后投上去,效果稀烂。快闪官方说月活八千万,按他们公布的流量模型,我那条gg至少应该有五十万曝光,结果实际只有八万。八万!转化率更离谱,品牌方预期的roi完全没达到。” 马小飞一口啤酒灌下去,声音有点哑了:“品牌方觉得是我內容做得烂,尾款两万块直接不付了。我找快闪客服投诉数据有问题,你猜人家怎么说?“投放效果受多种因素影响,建议优化內容质量。”” “尾款没追回来?”张浩然问。 “追个屁。品牌方说没达到kpi就是没达到,合同里白纸黑字写著。我总不能告诉人家“快闪数据注水所以效果差”吧?我拿什么证明?”马小飞搓了搓脸,“一万二製作费打水漂,两万尾款没了,三万二。我一个月才赚八千多。” 韩路一看著他的表情,感觉他都快吐血了。 “后来我不死心,又花了一个星期扒他们的公开数据。cpm、用户活跃曲线、gg填充率,全都对不上。”马小飞压低声音,“老韩我跟你说,他们的数据至少注了三倍水。但我没有技术能力去证明,只能从投放数据反推,不够硬。我要是发出去,快闪法务分分钟告我誹谤。” 实际上是四倍以上。 韩路一看了马小飞一眼。月收入八千二的人,亏了三万二。相当於四个月白干。 他没吭声。 张浩然在旁边开口了:“快闪b轮的领投方是星辰资本和云帆创投。这两家都不是小机构,尽调应该做过了。如果数据真有这么大的水分,投资方不可能看不出来。” “那就是投资方也被骗了唄。”马小飞说。 “或者投资方知道,但装不知道。”张浩然用筷子点了点桌面,“击鼓传花,只要能在下一轮之前把估值做上去,接盘的不是他们就行。” 韩路一想起下午在快闪团队页看到的那张脸,问了一句:“快闪的cto周明哲,你听说过吗?” 张浩然剥虾的手停了。“周明哲?”他皱了下眉,“这名字……等等,他是不是之前在鼎盛?” “嗯。前年年会我见过他,坐王志远那桌。” “对。”张浩然放下筷子,“他是王志远带出来的。2023年从鼎盛离职的,之前在王志远手底下干了三年技术。走的时候鼎盛內部还有人议论,说是王志远放自己人出去。” 马小飞在旁边听得两只眼睛越瞪越大:“等一下,快闪的cto是鼎盛vp的老部下?” “大厂的人出去创业太常见了,不一定有什么。”张浩然说。但他顿了一下,语气变得谨慎,“不过我上个月帮行里做合规审查的时候,扫到过快闪天使轮的一笔投资,走的壳公司。结构上像个人投资通道,不像正规机构行为。” 他没继续说。三个人都沉默了两秒。 韩路一喝了口啤酒。快闪的水,比他想的要深。 他看著张浩然。这人平时话不多,但看问题的角度总是很准。 “假设,”韩路一斟酌著用词,“假设有人拿到了快闪数据造假的硬证据,技术层面的那种。怎么处理比较稳妥?” 张浩然抬头看了他一眼。 “除非是竞对的那几个大公司,普通人要举报他们不是以卵击石吗?人家法务也不是吃素的……” 话没说完,马小飞停下来,也看了他一眼。 “老韩。”马小飞放下啤酒瓶,“你是不是知道点什么?” “我隨便假设。” “你这个隨便假设的表情可不太隨便。” 韩路一没接话,喝了口啤酒。 张浩然想了想,说:“如果真有硬证据,直接举报不是最优选择。快闪估值百亿,法务团队肯定有准备的。最稳妥的做法是走匿名渠道,找专业媒体。但在这之前,” 他从手机里翻出一张电子名片,推到韩路一面前。 “先找个靠谱的律师,搞清楚法律风险,然后再行动。” 名片上写著:顾司玥,海城博衡律师事务所,高级合伙人。 “你认识?”韩路一问。 “我们银行的外聘法律顾问之一。做网际网路和智慧財產权诉讼的,非常厉害。”张浩然说,“人有点冷,但专业能力没得说。” 韩路一把名片存了下来。 马小飞在旁边看看这个看看那个,嗅觉敏锐得像一条自媒体猎犬:“你们俩这什么眼神?到底怎么回事?老韩你是真的有料对不对?” “我真的是隨便假设。” “我信你是秦始皇。” 三个人又喝了一轮。话题从快闪聊到了各自的近况,马小飞的帐號卡在五万粉上不去,张浩然在银行做it无聊到想辞职但不敢,韩路一被裁了反倒是三个人里最淡定的。 “说真的老韩,你接下来打算干嘛?”马小飞问。 “先接点私活。”韩路一说的是实话,“然后看看有没有什么想做的。” “你这技术水平,出去创业分分钟的事。” “创业这东西不是光有技术就行的。” “行了行了,”马小飞站起来去结帐,“今天算我请。改天你发財了记得带上兄弟。” “不是说我请吗?” “你刚失业呢你请什么请。”马小飞把他摁回塑料凳上,“这种时候还跟我抢买单?给我省省吧老韩。” 韩路一笑了笑,没再爭。 回家的路上下起了小雨。 海城二月的雨带著冷意,不大但黏人。韩路一没带伞,走到楼下的时候头髮已经湿了。 上到五楼,开门进屋,换了双拖鞋。 韩路一坐到电脑前,打开了下午记录快闪问题的那个文本文件。 2300万人的隱私正在裸奔。这不是一个“要不要管”的问题。 是一个“怎么管才安全”的问题。 张浩然说得对,先找律师。 韩路一拿起手机,翻到张浩然发来的那张电子名片。 顾司玥。海城博衡律师事务所。 他看了看时间,晚上九点半。 他打开博衡律师事务所的官网,找到了在线预约页面,填了一个明天上午的諮询预约。 姓名:韩路一。 諮询方向:网际网路企业数据合规。 备註:涉及用户隱私安全的技术举报需要法律评估。 发送。 韩路一把文本文件保存好,加了密。关上电脑,去洗了个澡。 明天还有个律师要见。 张浩然说她人有点冷。 有多冷,明天看看就知道了。 第五章 两千三百万分之一 博衡律师事务所在陆家嘴一栋写字楼的十九层。 韩路一站在大堂的楼层指示牌前,看了一眼手錶,上午十点差两分钟。他今天特意换了件乾净的衬衫,头髮也拢了拢。陆家嘴的律所,穿运动服进去不太合適。 电梯到十九楼,门开。 前台是全透明玻璃墙设计,黑胡桃木前台上摆著一枝白色马蹄莲。墙上掛著一排律师照片和执业资质,金色铭牌刻著“博衡律师事务所”。 “您好,请问有预约吗?” “韩路一,预约了十点的諮询,顾司玥律师。” 前台翻了一下电脑,点点头:“顾律师在会议室等您了,这边请。” 走过一段走廊。韩路一下意识地开了视界,隨即又关了。不著急,等见到正主再说。精力值100满的,今天是带够了弹药来的。 前台推开会议室的门。 “顾律师,您十点的客人到了。” 会议室不大,一张六人位的会议桌,窗外能看到半截陆家嘴的天际线。桌子一头坐著一个人。 黑色西装,白衬衫,扣子繫到最上面一颗。黑色长直发在脑后束成一个低马尾,几乎没有碎发。细框眼镜下面是一张线条分明的脸,很白,嘴唇抿成一条直线。 整个人像一份排版严谨的法律文书。 顾司玥从笔记本电脑后面抬起头,看了他一眼,站起来。没有伸手,没有笑容,只是微微点了一下头,整套动作加起来不超过两秒,然后重新坐下。 “请坐。” 两个字,礼仪挑不出毛病,但温度大概在零下。 韩路一坐下来。张浩然说“有点冷”,这叫有点? “顾律师,我——” “韩路一,前鼎盛集团算法工程师,p7,今年二月被裁员。諮询方向数据合规,备註写的技术举报。“她翻了一页本子,“你的公开背景我查过了。“ 韩路一眨了一下眼:“……效率挺高,我连自我介绍都省了。” “諮询按小时收费。”顾司玥合上笔记本电脑,终於正眼看他,“说吧,什么情况。” 韩路一开了视界。 数据面板在顾司玥身上浮现。 【顾司玥|28岁|博衡律师事务所高级合伙人】 他多看了一眼,面板展开了详情。 【情绪:公事公办(隱藏:略微好奇)】 【评价:又一个程式设计师?】 【逻辑推理能力:异常值(outlier)】 又一个程式设计师。这五个字配上问號,信息量很大。说明找她諮询的程式设计师不少,而且她对这个群体的整体评价不太高。 异常值。视界给人打標籤,韩路一见过“优秀““较强“,没见过直接標“异常值“的。这是数据偏离正常分布太远,视界不好给评分了。 他关掉视界。 “我在一个公开渠道下载的app上,发现了一些数据异常。” “哪个app?” “快闪。” 顾司玥的表情没有任何变化,拿起了桌上的笔。 韩路一提前准备好了一份说辞。他不能暴露金手指,所以要把“视界扫描”包装成“技术分析”。好在他確实有技术能力支撑这个说法。 “我下载快闪的app后,出於职业习惯做了一些技术层面的观察。app运行时的网络请求行为和它在用户协议中声明的数据採集范围有明显不一致。” “具体说。” “两个层面。”韩路一竖起手指,“第一,隱私窃取。app实际读取通讯录、简讯记录、gps轨跡,但用户协议只声明了基本设备信息,严重超范围採集。传输方式是base64编码。” “base64?”顾司玥抬起眼睛。 “明文等价。任何计算机专业的学生都能在三十秒內还原全部內容。不叫加密,叫裸奔。” “第二,数据造假。”韩路一说,“我对apk做了反编译,用户id自增主键最大值约2300万,但官方宣称註册用户8000万。然后我用爬虫抓了公开页面的活跃用户数据,大量帐號的行为模式高度雷同,呈机器生成特徵。更离谱的是——官方宣称日活3500万,比真实註册还多。多出来的全是假的。” 顾司玥把笔放下,靠在椅背上。她的表情还是那张冰面,但韩路一注意到她的坐姿从“应付諮询”变成了“认真听”。 “影响范围?” “约2300万註册用户的隱私数据在裸奔。融资方面,b轮十个亿的估值基础全建在假数据上。” “你说的这些,有没有留证据?” “apk抓包记录、爬虫数据、行为分析报告,全部做了脱敏处理。只涉及app公开行为,没碰过任何后端代码或者伺服器。” “你確定?” “確定。所有操作都在合法范围內——下载公开app,反编译公开安装包,抓取公开页面数据。和正常的安全研究没有本质区別。” 顾司玥看了他几秒。 那几秒钟让韩路一有一种被x光扫描的感觉。但他扛住了,表情平静。 “你的技术分析能力是够的。”顾司玥开口了,语气没有任何夸奖的意思,纯粹是在陈述事实,“但技术能力和法律安全是两回事。你知道快闪是什么体量的公司吗?” “b轮融资十个亿,估值百亿级別。” “对。一百亿。法务团队至少二十人,外聘律所不会少於三家。你如果实名举报,他们有一百种方法让你后悔。” 顾司玥把笔搁在本子上,手指交叉,看著他。 “我需要问你一个问题。” “请说。” “你跟快闪有劳动关係吗?” “没有。” “投资关係?竞业关係?商业纠纷?” “都没有。” “你不是快闪的员工,不是投资人,不是竞爭对手,甚至不是被快闪直接侵害过利益的当事人。”顾司玥的语速没有变,但每个字都在收紧,“你是一个刚被別的公司裁员的程式设计师。你现在要做的事,是去碰一家百亿估值的公司。” 她停顿了一下。 “为什么?” 这个问题问得很直接。 韩路一发现顾司玥看他的眼神变了。不是刚才“公事公办”的眼神,是在评估,评估他是正常人还是有別的企图。 对一个律师来说,委託人的动机决定了这个案子值不值得接。一个没有利害关係的人要去戳百亿公司的眼睛,要么是傻,要么是圣人,要么背后有別的东西。三种都不好接。 韩路一早就知道这个问题会来。 “你说我不是被直接侵害过利益的当事人,这一点不对。”他说。 顾司玥微微抬了一下眉毛。 “我下载了快闪。”韩路一说,“我的手机里有我朋友的电话、我的聊天记录、我每天去了哪里。从我安装这个app的那一刻起,这些东西就在以base64明文被偷走。” 他停了一下。 “我就是那两千三百万人之一。” 顾司玥没说话。 “我一个兄弟是做自媒体的。上个月在快闪投了一单gg,因为数据注水,效果远低於预期,品牌方不付尾款。他自己贴了一万多的製作费,全打了水漂。他一个月才赚八千块。”韩路一的语气平静,“他没有技术能力去证明快闪造假。他能怎么办?找客服投诉?人家让他“优化內容质量”。” 顾司玥的笔在本子上轻轻点了一下。 “我前天刚被公司裁员。”韩路一说,“原因你查过了,不用我多说。大公司欺负小人物这种事,我刚经歷完一遍。快闪乾的是同一套,我是大公司,我掌握数据,用户是小人物,我想怎么用就怎么用。反正你们看不到。” 他看著顾司玥的眼睛。 “现在我看到了。” 会议室安静了几秒。 顾司玥看了他一会儿。然后她拿起笔,重新翻开本子。 “两千三百万人里,只有你一个人跑来找律师。” “两千三百万人里,有我一个就够了。” 第六章 七十二小时 “两千三百万人里,有我一个就够了。” 顾司玥没有评价这句话。她开始在本子上写字。 “方案分三层。”她落笔极快,“第一,匿名举报,网信办和工信部,我来擬法律表述。第二,证据公证,你的分析材料具备法律效力。第三,法律防火墙,快闪找到你头上的任何接触都通过我中转。” 她抬起眼睛看著他。 “按我说的做,他们告不到你,自作聪明的话,我也救不了你。” 韩路一靠在椅背上。 “收费怎么算?” “諮询费每小时两千,不便宜。”顾司玥合上笔记本,“但你请得起,刚多拿了五万赔偿金,不是吗?” 她怎么知道的? “做律师的基本功是了解你的客户。能在被裁员当天还发现赔偿金计算错误的人,”她停了一下,“至少不蠢。” 韩路一偷偷开了一秒视界。 【顾司玥|情绪变化:公事公办→微妙的认可|评价升级:有脑子的程式设计师】 “行,按你说的来。” 顾司玥站起来收东西。走到门口,她停了一下。 “你有七十二小时。” 韩路一愣了一下。 “快闪下周二有投资人闭门会,b轮交割的最后环节。会前引爆效果最大。”她的语气冷得像在念判决书,“过了这个窗口,b轮一旦close,举报的影响会小很多。” 韩路一算了一下。今天周五。周二闭门会。还有七十二小时。 “另外,事情做乾净。这家公司背后不简单。” 说完她推门出去了。 韩路一站在会议室里,回味著最后两句话。他这次见面得到的信息比想像的多得多。 倒计时开始了。 —— day 1 韩路一从律所出来,在地铁上用手机备忘录整理思路。回到家花了两个小时,把快闪的技术分析写成一份十二页的脱敏报告。数据不涉及任何非公开信息,但逻辑链完整,结论清晰,不懂技术的人也能看明白快闪在干什么。 完成后拆成两个版本。完整版给监管,精简版给媒体。 下午,公证处。 工作人员看完报告,表情从礼貌微笑变成面无表情,又从面无表情变成反覆翻页確认。 “先生,您確定这份材料可以公开?” “確定。全部是公开可获取的信息。” 盖章,签字,公证书到手。一共花了四十分钟。 出了公证处,韩路一打了三通电话。 第一个,顾司玥。 “公证完了,举报材料什么时候递?” “今晚。匿名渠道已经安排好了。” 第二个,马小飞。 “举报快闪,你那有媒体的路子吗?” 电话那头安静了三秒。马小飞的声音切换成了韩路一很少听到的认真模式:“你有硬东西?” “已经公证了,法律乾净。但必须走正规媒体首发。自媒体发,快闪法务直接告你誹谤。” “我认识的36度的编辑老赵,我今天联繫他。老韩,那帮孙子坑了我三万二,这事要是成了……” “我这可不是给你报私仇。这是2300万用户的隱私。” “行行行你高尚。但我也顺便报仇。” 第三个,张浩然。 “能帮我从金融侧梳理一下快闪的融资链条吗?公开信息,看估值逻辑站不站得住。” 电话那头敲了两下键盘。“快闪?你要动手了?”张浩然哼了一声,“我早觉得他们的增长曲线有鬼。给我一天。” 三条线同时启动。 晚上九点,顾司玥发来消息:“举报材料已递出。从现在开始,不要主动联繫任何记者,不要发社交媒体。你对任何人说的每一句话,都默认可能被取证。” “明白。” ““任何人”包括你那两个朋友。” 韩路一看著这条消息,觉得这个女人的谨慎程度堪比加密通信协议。 倒计时:48小时。 —— day 2 凌晨两点,马小飞转来老赵的消息。老赵看完材料,用马小飞的话说,“声音都在抖”。36度编辑团队连夜启动了交叉验证。 但紧跟著第二条消息让韩路一坐了起来。 老赵说:快闪的公关部似乎嗅到了什么。今天下午开始密集约行业媒体“沟通”,疑似在做舆论预案。如果不加速,对方可能抢先发闢谣声明把水搅浑。 韩路一打开快闪app,开了视界。 他的脸色变了。 快闪昨晚悄悄推送了一次热更新。更新日誌写的是“优化用户体验”,但视界清清楚楚地看到,隱私数据採集通道正在被逐步关闭。窃取用户隱私的接口有三个已经停用,剩下两个在做代码混淆。 他们在刪痕跡。 精力值掉了11点。韩路一关掉视界,给顾司玥发消息。 “快闪昨晚紧急更新app,在关闭隱私导出通道。他们开始销毁证据了。” 顾司玥三十秒后回了几个字:“提前十二小时。” 韩路一盯著这条消息。原计划周二早晨发布,现在要提前到周一晚上,留给36度的审稿时间又短了半天。 下午,张浩然的金融分析到了。一天就做完了,快闪的融资链条、股权结构、资金流向,全部用公开数据梳理清楚。结论:b轮估值的逻辑完全建立在注水数据上。数据一垮,估值就是空中楼阁。 三条线的材料齐了。就看36度审稿了。 倒计时:22小时。 —— day 3,上午。 韩路一把快闪紧急更新前后的数据对比截图发给顾司玥。销毁证据这个行为本身,就是最好的证据。匿名渠道追加提交。 上午十点,马小飞接到老赵的一条语音。没有完整的句子,就一句“內审过了”,后面跟著一声长长的呼气。一天半的交叉验证,三个匿名信源的补充採访,过了。张浩然的金融分析同步转给老赵作辅助材料。 下午两点,404寢室群弹出一条消息。四个字。 “晚上八点。” 韩路一盯著屏幕。脖子酸得转不动,桌上摆著三杯外卖咖啡,只喝了半杯,剩下两杯凉透了。 顾司玥发来最后一条:“准备好了?” “准备好了。” 韩路一关掉手机屏幕。窗外是海城的午后阳光,隔壁隱约传来林朵朵看动画片的声音。一切都很正常。 他起身,打算去床上闭两个小时的眼。 手机调了八点的闹钟。 第七章 引爆 第七章 lv.2 晚上八点整。 韩路一坐在电脑前,刷新了一下36度科技频道的页面。 报导上线了。 標题:《独家调查:快闪科技核心运营数据涉嫌大规模造假,2300万用户隱私或遭泄露》。 他没有做任何事。没有转发,没有评论,没有在任何平台提一个字。他只是看著。 十分钟。科技圈的微信群炸了。马小飞在404寢室群里发了一串感嘆號,张浩然发了一个句號。韩路一没回。 三十分钟。微博热搜第九。 一个小时。热搜第三。话题阅读量破两亿。评论区以每秒刷新的速度在增长。 “base64加密隱私数据???我读大一都不敢这么写。” “2300万用户的隱私就这么裸奔?快闪你是认真的吗?” “星辰资本那帮人怕是睡不著了,b轮的钱还没捂热就炸了。” 两个小时。快闪科技官方发布紧急声明,措辞模糊,既不承认也不否认,“正在核实相关信息,將第一时间向公眾通报”。 翻译一下就是“我们在想怎么圆”。 三个小时。星辰资本发布简短声明:“已关注相关报导,正在与快闪管理层沟通。” 资本市场的反应比舆论更快。快闪的b轮交割暂停了。周二的投资人闭门会直接取消了。 韩路一打开报导页面,开了一秒视界。 【该报导阅读量:287万(上升中)】 【舆论影响力评级:a】 【快闪科技估值实时波动:-22%(下降中)】 他关掉视界。 手机响了。 顾司玥。 “你看到新闻了?”韩路一接起来。 “看到了。写得很克制,全靠数据说话。”顾司玥的声音还是零下二十度,“法律层面你放心。他们查不到你。” 顾司玥在电话那头停了两秒。 “做得不错。” 然后掛了。 韩路一看著通话结束画面,花了几秒钟消化这四个字。顾司玥说“做得不错”,从这个人嘴里说出来,大概相当於普通人说“你是我见过最牛的人”吧。 他笑了一下,放下手机。 评论区还在以每分钟两位数的速度增长。 但韩路一注意到另一件事,技术圈开始追查那份匿名技术分析的作者了。 有人在论坛上逐段分析报告的行文风格和技术视角。有人猜是某大厂的安全工程师,有人猜是竞品公司的人在搞事,有人甚至猜是快闪內部的吹哨人,“对底层技术架构太熟了,不像外部渗透”。 一个id叫“逆向工程老王”的用户发了一条长帖,从报告中对base64的吐槽方式、对数据管道的描述习惯、对隱私合规的技术理解深度三个维度做了画像分析。结论是:“作者大概率是一线大厂的后端或算法工程师,工作年限五年以上,对app行为分析有实战经验。” 距离猜到韩路一,只差几步。 但没有人往“刚被裁员的前鼎盛p7”这个方向想。一个失业程式设计师,在所有人的排除法里,不在候选名单上。 韩路一把这个帖子收藏了,关掉了瀏览器。 顾司玥的话还在耳边,“法律层面你是乾净的。他们查不到你。” 人肉搜索可不走法律渠道。 他需要继续保持隱身。 就在这时候,一阵剧烈的头痛毫无徵兆地劈了下来。 不是普通的头痛。像是有什么东西在他脑子里重新编译。 视界自动弹开了。 整个视野里涌进一道巨大的系统提示,金色的,占据了他半个视野。 【重大bug修復协助完成】 【影响范围:2300万用户隱私安全】 【你的行动推动了该bug的公开和修復进程】 【经验值+200】 【当前经验值:212/200】 【升级条件已满足!】 【正在升级……lv.1→ lv.2】 头痛从劈变成了炸。 韩路一一手撑住桌子,一手捂住太阳穴。眼前的世界碎裂了,像一台电脑强制重启,所有画面闪烁、断裂、重组。他感觉自己的大脑被格式化了一遍,然后重新安装了作业系统。 鼻血。又来了。 他扯了张纸巾堵住鼻子,整个人瘫在椅子上。 重启持续了大概二十分钟。 当一切稳定下来的时候,他睁开眼,视界面板已经变了。 【升级完成】 【lv.2|精力:83/250】 韩路一盯著面板看了十秒钟。 就这? 等级从1变成了2,精力上限翻了一倍多,然后……没了? 但他立刻发现了不同。 视野里的信息变多了。之前只能感知到身边几米的范围,现在整栋楼的数据都在往他眼睛里灌。隔壁林晚晴家里的面板隱约浮现在视野边缘,楼上楼下住户的数据以半透明图层的形式叠在空间里。 信息量比之前大了十倍不止。他赶紧关掉了全范围扫描,只保留近距离的被动感知。 还有一个更重要的变化。 他打开笔记本电脑,点进最近一个接单项目的代码仓库。 之前在lv.1看代码,bug的位置会亮红光,旁边飘一行简短的警告——空指针异常/內存泄漏/竞態条件。看到了,然后呢?还是得自己分析,自己想方案,自己改。 现在不一样了。 每一个红色標记后面,都跟著一整块展开的修復路径。改哪个文件、改哪一行、怎么改、改完之后影响哪些调用链——全部列得清清楚楚,像一份写好的处方。 韩路一盯著屏幕看了十秒钟。 他隨便点开一个標记为严重的bug。是资料库连接池泄漏,之前他接单的时候已经手动修过了。但修復路径给出的方案比他的更优——不只是补上了泄漏,还顺带优化了连接池的回收策略。 如果升级之前他是拿著放大镜找虫子的人,现在他手里多了一本《害虫防治指南》。 他又看了一眼面板——精力值在缓慢下降。深层扫描比之前费精力了,但上限也翻了一倍多,足够用。 韩路一关掉代码仓库,往椅背上一靠。 肩膀还是酸的。眼睛还是乾涩。连日赶报告、做公证、来回跑,身体的疲惫不会因为升了一级就消失。 但脑子很兴奋。 该做正事了。 韩路一擦掉鼻血,拿起手机。 他想给马小飞和张浩然说点什么,但想起顾司玥的话,“你对任何人说的每一句话,都默认可能被取证。” 算了。不说了。 他退出微信的时候,屏幕顶部跳出来一条新消息提醒。 一个他已经很久没看到的头像。 苏念念。 “路一?好久不见。听说你从鼎盛出来了?” 韩路一看著这条消息,怔了两秒。 苏念念…… 两年多没联繫了。上一次有交集还是23年国庆节,他在朋友圈发了一张加班工位的照片,她在底下回了句“注意身体”。 他的手指悬在屏幕上方,没有打字。脑子里闪过了几个画面,三食堂门口她冲他挥手的样子,图书馆里她趴在桌上睡著的侧脸,毕业散伙饭上全班举杯的嘈杂。 很快,像弹幕一样划过去了。 最后他打了四个字。 “嗯,出来了” 消息发出去不到两秒,对话框里苏念念的名字变成了: 对方正在输入… 第八章 两年零四个月 苏念念的微信回得很快。 “太突然了吧!你怎么也不在群里说一声?” “没什么好说的,正常流动。” “你还是这样,什么事到你嘴里都是四个字就打发了!” 韩路一看著屏幕笑了一下。苏念念说话的风格一点没变,打字永远带感嘆號,像怕对方感受不到她的情绪。 “最近怎么样?”他问。 “还活著。你呢?有什么打算吗?” “先休息一下,想想接下来干什么。” “那要不要出来坐坐?好久没见了,敘敘旧。” 韩路一打了几个字又刪掉,最后回了个“行”。 苏念念发过来一个定位。 bug café。 韩路一愣了一下。这家咖啡馆在他家附近,离小区走路十分钟,他几乎每周都去坐一坐。老周的咖啡不算最好喝,但胜在安静,wifi稳定,程式设计师扎堆的地方总有一种特殊的鬆弛感。 苏念念怎么知道这个地方的? “大眾点评搜的,评分还挺高。而且离你近,別跟我客气说你来接我之类的。” 苏念念说她明天下午在附近见个客户,三点左右能结束,“正好过来坐坐?” 韩路一说行。 关掉微信,他靠在椅背上看著天花板。 两年多的空白说长不长,说短也不短。够一个人换两份工作,够一座城市拆掉一条街再盖起来,够两个曾经每天说话的人变成通讯录里埋在下面的一个静静地头像。 第二天下午两点五十,韩路一推开了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全部修完。他写了一份简洁的修復报告发给甲方。 甲方回覆:??? 第二条消息:哥们你这也太快了吧 第三条消息:我们自己的团队排查了两周都没找到原因 第四条消息:牛逼 第五条消息:追加个赏金行不行? 韩路一回了一个微笑表情。 第二单,一个初创公司的app崩溃问题。报价8000。七个bug,最严重的是內存泄漏。半小时搞定。 第三单,一个小程序的支付回调异常。报价3000。问题不大,十五分钟收工。 十一点半。三单全部交付。总收入两万六。 他在鼎盛干半个月,税后到手也就这个数。 当然,自由职业要自己缴税,社保也得另出。但就算打完折,半天干出半个月,这笔帐怎么算都不亏。 这时,甲方的好评已经掛上平台了。 “史上最快交付,质量无可挑剔。” “这人是不是开了掛?半小时解决了我们两个月的bug。” 韩路一看著“开了掛”三个字,嘴角抽了一下。 你还真说对了。 他关上笔记本电脑,靠在椅背上。 这是韩路一五年来,第一次干完了所有的活。 在鼎盛的时候,他的日程表上从来没有“空閒”这个词。早上九点到,晚上九点走,运气好的话。赶版本的时候十一二点是常態,凌晨两三点也不稀奇。午饭是工位上扒两口外卖,晚饭是会议室里啃麵包。周末偶尔能休一天,但手机上隨时会弹消息。 他已经忘了工作日的中午是什么样子了。 韩路一站起来,走到阳台上。 二月的阳光照进来,暖洋洋的。楼下的小花园里,几个退休老大爷正在下棋。旁边的长椅上,一个年轻妈妈在刷手机,婴儿车里的小孩睡著了。小卖部的王阿姨搬了个板凳坐在门口晒太阳,嗑著瓜子。 这些人每天都在这儿。只是他从来没在这个时间看到过。 他站了一会儿,回屋打开冰箱。 空的。除了半瓶老乾妈和两盒过期的酸奶。 韩路一拿上钥匙下了楼。小区门口有个菜市场,他路过了几百次,但从来没进去过。 他进去买了西红柿、鸡蛋、一把小葱。 回家做了一盘番茄炒蛋。 不好吃。 但至少没糊。 他站在厨房里把午饭吃完了,洗了碗,又回阳台上站了一会儿。 韩路一脑子里浮出了一个奇怪的念头:这就是自由的感觉吗?真不习惯。 突然他听到敲门声,刚拉开防盗门,差点被一个小小的身影撞了满怀。 “路一哥哥!” 林朵朵抱著一个粉色的平板电脑,眼眶红红的,小脸上还掛著没干的眼泪。 “怎么了朵朵?”韩路一蹲下来。 “我的平板坏了……”林朵朵把平板举到他面前,屏幕卡在一个花花绿绿的界面上,完全不动了,“动画片放到一半就不动了,重启也不行,妈妈也弄不好……” 她说著说著嘴巴又瘪了。 “让我看看。”韩路一接过平板。 隔壁501的门开著,林晚晴站在门口,一手拿著画笔,头髮隨便扎了个丸子,脸上还沾著一点顏料。 “不好意思啊,朵朵非要来找你。我说了妈妈明天给你修,她不听。”林晚晴有点不好意思。 “没事林姐,小事。” 韩路一低头看著平板,隨手开了一秒视界。 【设备:儿童平板|型號:小豆平板5 |故障类型:系统级】 【bug检测:后台进程內存溢出导致系统冻结|起因:某动画app存在內存泄漏(v3.2.1已知缺陷)】 【修復路径:强制安全模式启动+清除该app缓存+降级至v3.1.8稳定版】 韩路一关掉视界,按照修復路径操作。长按音量和电源键,进入安全模式,清除缓存,把那个有bug的动画app回退到上一个版本。整个过程不到两分钟。 屏幕亮了。那只粉红色的小猪重新在屏幕上蹦蹦跳跳。 “好了。” 林朵朵的表情变化堪称教科书级別,从含泪到震惊到狂喜,总共用了零点五秒。 “路一哥哥好厉害!”她一把抱住平板,又一把抱住韩路一的腿,“比妈妈厉害一百倍!” “……谢谢你的一百倍。”林晚晴在门口翻了个白眼,但嘴角是往上翘的。 面板闪了一下。 【微型辅助任务完成|经验值+3 |当前经验值:15/200】 林晚晴牵著朵朵的手回了501。门关上之前,朵朵探出半个脑袋冲他挥了挥手。 韩路一的一周有了固定的节奏。 上午接单。两到三个,挑问题有意思的接,中午前收工。下午是他自己的时间。 他开始做一些以前没时间做的事。 周四傍晚去跑了一次步。上一次跑步可能还是大学的时候。他沿著小区外面的河道跑了八分钟就喘得不行。五年的996,帐都记在身上。 周五下了场小雨。他坐在阳台上看书听雨声。隔壁传来朵朵咿咿呀呀唱歌的声音,隔著一堵墙,模模糊糊的。 这些都是很小的事。小到在鼎盛的时候连想都不会想。 但连在一起,它们构成了一种韩路一快忘掉的东西。 生活。 …… 一周结束。 平台加私单,总收入六万五。 他在鼎盛干一个月,税后到手五万。一周干出一个多月。 钱的事解决了。但韩路一发现了一个新问题。 视界面板上,经验值还停在15。 十几个活,六万五,零经验。帮朵朵修一个平板反倒加了三点。 收了钱的不算。 这套系统的规则比他想的简单,赚钱归赚钱,想升级,得帮別人的忙。不收钱的那种。 韩路一关掉银行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修復的面板紧跟著弹了出来。 本书首发 追书认准 101 看书网,101??????.??????超省心 ,提供给你无错章节,无乱序章节的阅读体验 【检测到可修復系统|修复方案已生成|预计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全部干掉。 然后让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级锁芯,防技术开锁的那种。明天我帮你看看。” “我……好。谢谢。” 林晚晴把林朵朵抱进屋里,在门口又回了一次头。 “韩路一。”她顿了一下,“今天真的谢谢你。” “早点休息,林姐。” 门关上了。锁扣了两道。 楼道重新暗下来。韩路一站了两秒,確认隔壁没有其他动静,转身回了自己家。 关上门之后,他靠在门板上,开了视界。 隔壁的基础面板透过墙壁隱约浮现。 【林晚晴|30岁|自由插画师】 lv.2的50米范围,隔壁的数据自动推送过来。他没办法只选择看一部分。基础面板下方,深层信息跟著展开了。 【情绪:感激(隱藏:安全感)|当前状態:安抚女儿中|核心诉求:保护女儿】 韩路一把注意力集中在另一个信息上—— 那个从第一次见面时灰著的,標註为“待解锁”的bug標籤。 现在它亮了。 lv.2的视界,终於让这个bug的详情完整展开了。 【bug:家庭纠纷(严重)】 【详情:林晚晴前夫许嘉铭正在筹备爭夺抚养权诉讼】 【证据收集状態:许嘉铭方已委託律师,以“母亲经济能力不足、居住环境不稳定”为由准备起诉】 【威胁等级:高】 【当前林晚晴应对状態:无法律支持,未諮询专业律师,处於被动防守】 【建议应对路径:需专业家事律师介入,提前准备应对方案】 “母亲经济能力不足、居住环境不稳定。” 初二那年,他也听过差不多的话。他爸打电话来,说“你一个人带孩子太辛苦了”,意思是想爭抚养权。他妈掛了电话,在阳台站了很久,以为他没看到。 那年他十三岁。林朵朵今年五岁。 debug修復建议:需专业家事律师介入。他脑子里浮出了一个名字。 顾司玥。 顾司玥做的是智慧財產权诉讼,不是家事方向。但她在博衡,內部肯定有做家事的律师。 不过,他跟林晚晴就是邻居,说上话还不到一个月。赶走一个醉汉是一回事,插手人家的抚养权官司是另一回事。 韩路一关掉了视界。 他走回电脑前坐下。屏幕还亮著,光標在他刚才离开时的那一行闪烁。 他看了两秒钟代码,没继续写。 拿起手机,发现顾司玥在十分钟之前回了条消息,“竞业协议收到了。” 韩路一想了想,把备註从“顾律师”改成了“法律顾问-顾律师”。 然后关了电脑,洗了把脸,上床。 隔壁很安静。林朵朵大概已经被哄睡了。 第十六章 律师函 bugkiller的0.2版本打磨了一周多。 苏念念找几个开发朋友试用之后,给了他一份十九条的反馈。他改了七条半,第八条改到一半觉得方案不对,推翻重来,到今天还差一个收尾。 林晚晴那边没再出过事。偶尔在楼道碰见,她点个头就错身过去,有点像不知道该怎么跟他相处。林朵朵倒是每次都要喊一声“路一哥哥”,然后被妈妈轻轻拉走。 顾司玥那边发邮件说著作权登记在走流程,商標查重同步推进,“bugkiller”暂时没被註册过。 四月六號,周一上午。 韩路一坐在电脑前,手机开著语音通话,跟苏念念討论新版本的叠代方向。窗外天气不错,小区里有人在遛狗,楼下不知从哪飘上来一股葱油饼的香味。 “精度得再提一提,”苏念念的声音从手机里传出来,“现在体感误报大概百分之七八,用户觉得还有噪音。降到五以下才能真正进入工作流。” “我知道,单条误报可以標忽略、已经加上了,真压到五以下至少还得再训一版,成本有点高,” 门铃响了。 韩路一看了一眼门的方向。“有人敲门,等我一下啊。” 他起身开门,是快递员,手里有一个ems信封。一开门,电子签收板就递了过来。 他签了字,接过信封,快递员已经在按隔壁的门铃了。 韩路一关上门,走回电脑桌前坐下。 发件人:鼎盛数字科技集团有限公司法务部。 收件人:韩路一 手指沿封口撕开。 一份文件。一页纸。抬头印著鼎盛集团的logo,標题—— 《竞业限制义务提醒函》 內容很简短:提醒韩路一先生,您於2026年2月签署的离职协议中包含竞业限制条款,期限十二个月,范围涵盖“人工智慧、代码审查、软体开发工具及相关领域”。如贵方已在上述限制领域內从事经营活动,请立即停止並联繫我司法务部协商处理。 措辞挺客气的,但“请立即停止”那几个字,一个字比一个字沉。 文件一份离职协议复印件。竞业条款所在的那一段被人用黄色萤光笔標了出来。白纸上一道刺眼的黄。 韩路一盯著那片萤光色看了两秒。 签字的时候他扫过一眼。张薇说“標准流程,不会真启动的”,他就翻过去了。 然后他想到了一件事。 著作权登记是公开信息。国家版权局的系统,任何人都能查。 这边刚登记完,警告信就到了。 时间点也太巧了。 韩路一打开视界。 提醒函的纸面上浮出一层半透明的数据图层,字符流动了两秒,稳定下来,正文之外多出一条信息: 【文件发起链条:陈博文(建议)→法务部合规专员周洋(执行)→审批人:王志远(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是否就是这位前员工?”” 群里没人说话。 韩路一把手机扣在床上,去卫生间洗了把脸。水龙头开了很久,凉水从指缝往下淌。 记住我们101看书网 回来拿起手机。马小飞问:“老韩,什么打算?” “下午去见律师。” 马小飞:“我先帮你懟回去?咱不能吃这个哑巴亏。” “別。”韩路一打字。“你一出手,人家顺著你查到我,正中下怀。” 马小飞:“……行吧。” …… 下午两点。博衡律师事务所。 前台已经认识他了。“韩先生这边请。” 顾司玥在办公室等他。 窗台上那盆绿萝比上次好了一点,新抽了两片小叶子,土是湿的。 桌上摊著三份文件,按顺序排好。她面前摆了两杯咖啡,推了一杯到对面。 “坐。咖啡。” 韩路一坐下,端起咖啡。 顾司玥把一张纸推过来。上面画了三个圆,分別標著,竞业、归责、职务作品。前两个用红线连著,第三个单独在下面,画了个大大的感嘆號。 “你看到那篇自媒体文章了?” “看了。” “他们在打组合拳。”顾司玥拿起笔,点了点前两个圆。“竞业是锁链,归责是攻击。他们的算盘是,你站出来自辩,就暴露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的公测大概还有一周。產品还没上线,已经开始给別人的质疑帖点讚了。 韩路一把这条评论截了图,发给顾司玥。 关掉了论坛。 第二十二章 陈经理 鼎盛集团总部二十八层。晚上九点半,整层楼还灯火通明。陈博文办公室在走廊尽头,门关著。 他在刷论坛。 技术论坛热帖榜第二条,《nullpointer画像分析:他是谁?》。帖主把nullpointer所有公开信息串了起来,写得像侦探报告。 “bugkiller的bug模式资料库覆盖推荐系统、电商后端、支付链路三个方向。其中推荐系统方向的模式深度远超其他两个,推测他有很深的推荐系统背景。” “鼎盛推荐系统崩溃。nullpointer一个月前发的博客精准命中全部崩溃路径。简直像是当事人回忆录。” 当事人。推荐系统。鼎盛的推荐系统。 陈博文不用猜。 推荐系统核心开发,今年离职,技术顶尖——鼎盛符合条件的只有一个人。他亲手裁的。 评论区还在猜,“鼎盛?字节?海狸?小黄书?” “在职的大厂员工不可能做產品吧?被公司发现直接开除。” “那就是离职的。” 全网都在找nullpointer。没人知道答案就在他手机里,那是他两个月前亲手签的裁员审批单,上面的名字叫韩路一。 陈博文放下手机。嘴角压了一下,没压住。 竞业提醒函上个月就发了。十二个月限制期,白纸黑字。韩路一做bugkiller,正面撞上限制条款。 这不叫巧,这叫送。 论坛里所有人在猜“大厂高级专家”,p8起步,p9也有人猜。 一个p7而已。 他站起来,走到落地窗前。二十八楼,半个城市的灯铺在脚下。 一封函的事。 第二天上午。陈博文去了一趟二十二楼法务部。 上次来还是推那封竞业限制提醒函。走廊尽头的工位区,一排格子间,空调比楼上冷两度。 小周在。就是上次帮他擬提醒函的法务专员。 “小周,帮我擬个东西。竞业限制违约追诉函,前员工韩路一。” 小周推了推眼镜。“陈总,追诉函我需要先核实一下执行状態……” “十二个月限制期,二月底离职,不到两个月。他做的產品叫bugkiller,做ai的,全面覆盖。”陈博文把截图递过去。“板上钉钉的事,直接擬。” 小周看了看截图,犹豫道:“这个case我印象中好像有一些……” “周四之前给我。例会上要用。” 小周张了张嘴,没再说。 陈博文走出法务部。电梯里给王志远发了条消息:“王总,周四例会加个议题。前员工竞业违规,跟上次宕机有关。有把握。” 王志远回了一个字:“说。” “上次宕机舆情里那个预言帖,nullpointer,查出来大概率是韩路一。他最近做了个產品,但竞业还在限制期,一封追诉函过去,他要么配合我们的舆论口径,要么他现在做的东西全停。不花一分钱。” 过了十几秒。王志远回覆:“周四讲。” 周四。三十层大会议室。跨部门月度例会。 长桌坐了十来个人。產品负责人刘芳靠窗,用户增长负责人张毅在对面。法务负责人秦岭坐在长桌末端,面前摊著一叠文件。 王志远最后进来。深灰色西装,红色领带。在长桌正中落座。 前四十分钟是常规议程。陈博文坐在王志远左手边,笔记本电脑亮著,ppt停在封面。 轮到他了。 “占十分钟。上次宕机的舆情还有个尾巴没处理,跟在座几个部门都有关。” 投屏。封面:《sev0-20260414的后续公关处理》。 先翻到第二页,微博热搜截图,#鼎盛崩了#,两周前的。 “这个话题我们都经歷过了。舆情压下去了,事情本来翻篇了,但有一个尾巴没处理。” 翻页。nullpointer预言博客截图,发布日期红框標出,系统崩溃前整整一个月。 “这篇博客精准命中了我们全部崩溃路径。技术社区的共识是:写这篇文章的人掌握鼎盛推荐系统的底层架构。” 张毅放下了手机。 “社区已经在画像了。” 翻页。三栏表格,技术方向、时间线、关联事件。 “所有线索指向鼎盛近期离职的核心开发。还没人猜到具体是谁……” 陈博文停了一拍。 “各位想一下。如果身份被確认,媒体標题会是什么,“鼎盛裁掉核心开发,两个月后系统崩溃,被裁员工一个月前精准预言”。” “上次的舆情好不容易压下去了。这个標题能把它全部翻出来。这是一个公关炸弹。” 他扫了一圈。张毅已经把手机收起来了。 “综合判断,nullpointer大概率是今年二月裁掉的前员工韩路一。” 刘芳转头看了一眼王志远。 “他最近做了一个ai代码审查工具,內测两千多人申请。” 翻页。竞业协议扫描件。关键条款用红框圈了起来,旁边配著bugkiller在论坛招募內测贴的截图。 “韩路一签了標准竞业限制协议。十二个月限制期,覆盖ai、数据分析、软体开发工具。bugkiller一条不落。” 说到这里,他微微一笑。 “我已经让法务擬了追诉函。函发出去,对方只有两条路:要么赔违约金加停业,要么谈。谈的条件很简单,配合出一份技术澄清,预言帖是个人推演,不涉及內部架构。这份声明一出,上次宕机的舆情就彻底翻不了了。” 全场安静了几秒。 刘芳:“確定是他?” “百分之百。” 刘芳转向长桌末端。“法务这边呢?” 秦岭合上了手里的文件。 “陈经理。”秦岭的声音不高,语速不快。“你说的这份竞业协议,法务部核过了。” “公司没付竞业补偿金,对方律师走了法定解除流程。协议上个月就终止了。” 秦岭翻了一下桌上的文件,抽出一张。 “解除通知签收记录在档。”他抬头看著陈博文。“这函要是发出去了,对方律师一封回函,我们得上行业新闻。” 会议室里只剩空调在响。 刘芳看了一眼幕布上的ppt,又看了一眼陈博文。“补偿金为什么没付?” 陈博文张了张嘴。“p7,標准流程……hr那边——” “p7。”刘芳重复了一遍,语气没什么起伏。 幕布上还亮著他做的那页,红框圈著“限制期十二个月”,旁边配著bugkiller內测两千人的截图。 没人接话。 p7不值得花钱锁,但p7做出来的东西值得做十页ppt。 这个矛盾不需要说出来。 秦岭把抽出来的那张纸放回去,摞齐,语气没变:“陈经理,以后要出法律文件,走审批流程。不要直接找我的人。” 说完低头翻下一份文件。像在处理一件跟这间会议室毫无关係的事。 没人说话。 张毅拿起了手机。刘芳端著水杯,目光从陈博文身上移开,不经意地扫了一眼王志远。 王志远从头到尾没开口。保温杯端在手里,杯壁上凝著一层水雾。 刘芳放下杯子,轻咳一声:“下一个议题。” …… 散会。人陆续走了。 陈博文拔投影线,合笔记本,动作比平时都慢。走出会议室的时候幕布还亮著,投影仪的风扇嗡嗡转。 走廊里。王志远走在前面,步子不快不慢。 陈博文跟了上来。“王总……” 王志远脚步没停,就像没听见。 走到电梯口才开口。声音不大。 “这件事不要再提了。” 电梯门开了。王志远走进去,按了二十八层。 门快合上的时候,他又说了一句。 “韩路一那边,我另有安排。” 门合上了。 陈博文站在电梯外面。 走廊里没有別人了。投影仪的风扇还在会议室里转。 他站了很久。 第二十三章 唯一標准 傍晚,韩路一准备去bug café吃个简餐。 路过501的时候停了下来,敲了敲门。 开门的是朵朵。小丫头只拉开半条门缝,脑袋先探出来,眼睛一亮:“路一哥哥!” 林晚晴来开门,手里还捏著一支画笔,指尖沾了好几种顏色。头髮隨手绑了个高马尾。“怎么了?” “没事,路过看看。”他蹲下来跟朵朵碰了一下拳头。小丫头咯咯笑著跑回屋了。 他站起来。“林姐,最近还好吗?上次那个人……有再来过吗?” 林晚晴摇头。“没有。挺好的。” “那就好。有事隨时敲门。”韩路一转身往回走。 “路一。” 他停下来。 林晚晴靠著门框,往屋里看了一眼,朵朵趴在茶几上画画,没注意这边。她压低了声音:“……你认不认识律师?” 韩路一没多问。“我认识一个很靠谱的律师,很专业。我帮你牵个线。” 林晚晴沉默了几秒。画笔在指间转了一圈。“……好。谢谢。” “你等我一下”,他回502翻出沈予微的名片,把名片递过去。“直接打这个电话就行。” 他转身要走。林晚晴犹豫了一下:“对了路一,我还没有你微信。” 韩路一愣了一下。確实没机会加。他掏出手机,两个人扫了一下。 “有事隨时发消息。” 在bug café吃了点炒饭。手机一震,苏念念发来一个连结。 《ai代码审查赛道的三个底线》,作者赵文渊。 韩路一点开。 三千字的长文,通篇没出现bugkiller的名字,但每一段都是衝著他来的。 “训练数据的来源合规性是產品公信力的基石。当一个產品的核心数据来源无法被独立第三方验证时,用户的信任建立在流沙之上。” “匿名是权利,但匿名不等於免责。当匿名身份与商业利益绑定,社区有权要求更高標准的透明度。” “赛道需要的不是一鸣惊人的个体英雄敘事,而是经得起审视的工程化体系。” 底部署名:赵文渊,史丹福大学计算机科学博士,前谷歌高级工程师,codesafe创始人。 文章同步发了多个技术社区,並且迅速被很多科技媒体转载。 评论区已经打起来了。 “说实话看完有点动摇。nullpointer的检测率是强,但强的原因是什么?数据来源声明写了一句话,第三方验证在哪?” “赵博士这篇每个字都在点子上。匿名做產品不是问题,匿名加不透明加赚钱,这三样加一块就不行。” “內测的时候我跟团队推荐过bugkiller。现在有点后悔。万一训练数据真有问题呢?” “……所以没人在意codesafe official给techethicswatch马甲帖点讚这件事吗?” 最后一条沉在第二页底部,没几个人点讚。风向不太对。 韩路一在bug café看完全文,脸色不太好。 老周在吧檯后面擦杯子,探头看了他一眼:“谁惹你了?” “没事。同行互踩。” “咱们程式设计师还搞这个?” “写代码的不搞,写ppt的搞。” 老周笑了。 苏念念的消息过来了。“看完了吗?” 韩路一给苏念念打了个语音通话:“文章我刚看完。” 苏念念没有寒暄,语速很快:“他也太阴险了吧。表面讲行业规范,实际上把“匿名加数据来源不透明”两顶帽子扣咱们头上了。你看评论区,已经有人在问nullpointer是谁了。他这不只是攻击你,他想定规矩。他要是定好了,你就永远在他的框架里接受审判。” “我知道。” “那咱们怎么办?” “不接他的招。他聊规范,我聊结果。检测率摆出来,其他全是废话。” 电话那头安静了一秒。“好。我先帮你把內测数据整理好?” “嗯,检测率、误报率、影响评估覆盖率,跟codesafe公开数据放一起对比。” “给我二十分钟。” 掛了电话。韩路一起身回家。 他坐在书桌前,打开了一个新文档。 標题:《检测率就是一切》。 一千二百字。写完还不到八点。 不长。通篇只讲一件事:什么是好的代码审查工具。 “用户不关心你的创始人是谁,不关心你的团队有几个博士,不关心你的数据来源写了几页白皮书。用户只关心一件事,你能不能找到我代码里的bug。” “找得到,你就是好工具。找不到,你说什么都是废话。” “这是bugkiller內测首批用户的数据。” 一张表。三行数字:检测命中率、误报率、影响评估覆盖率。每一栏都附了內测样本量和用户验证比例。 “以上数据从今天起在bugkiller官网实时更新,不做筛选,不做美化。欢迎任何同行、媒体、用户隨时验证。也欢迎任何同赛道產品公开同口径数据,放在一起比。” 最后一句:“工具好不好,跑一遍就知道。” 发布。 二十分钟。回復破两百。一小时七百赞。 “最后那句笑死。” “赵博士写了三千字定规矩,nullpointer一千字都没到,数据往桌上一拍。来,比。格局差距。” “codesafe official给techethicswatch马甲帖点讚的截图又被翻出来了,吃相太难看。” “techethicswatch零发帖零回復昨天註册今天消失,马甲还需要实锤?” 赵文渊在自己博客置顶了一条回覆:“本文不针对任何具体產品。” 底下第一条回復有两千三百个赞。 “赵博士,您文章发布时间比bugkiller內测帖晚了三十六小时。您一般都是在竞品火了之后才关心行业规范的吗?” 赵文渊没再回復。 周五下午。马小飞在404群里甩了一条短视频连结。 “一出手就是巔峰!” 標题:《我试了全网最火的ai代码审查工具bugkiller,结果……》 韩路一点开。马小飞的风格,节奏快,表情包密,夸张又勾人。他用自己的一个开源小项目做了演示。bugkiller跑完,三个他不知道的bug,每个附带影响评估和修復建议。 “这玩意扫了一遍我的代码,把我三个月前埋的雷全翻出来了。” “第二个bug更离谱,它说高並发时有概率死锁。我寻思我这破项目也没啥並发啊。结果仔细一看,这个方法被另一个项目引用了,那个项目有並发场景。它怎么知道的?它怎么知道的??” “第三个,算了不展示了。三个月了,一行拼错的环境变量,线上没炸纯属运气。丟人。” 末尾总结:“工具有两种。一种让你觉得“还行吧”。另一种让你看完直接去翻自己的代码库。bugkiller是第二种。免费內测中,不是gg。但欢迎nullpointer给我打钱。” 张浩然在群里说:“你那项目一共多少行?三个bug命中率有点高。” 马小飞:“你闭嘴。” 韩路一:“你说了不是gg?” 马小飞:“工行 6222 xxxx xxxx xxxx马小飞谢谢老板” 四十八小时。播放量十二万。马小飞涨了將近一万粉,直接奔著七万去了。bugkiller从技术论坛的內测圈出圈到了泛科技受眾面前。 苏念念看到数据后发了一句:“马小飞可以啊,这期视频比我写两周推广文案都好使。” 韩路一截图发给马小飞。马小飞秒回:“苏女神???你俩现在天天聊???” “她帮忙看產品。” “看。產。品。懂了懂了。” 周一。 苏念念发了三张截图。没带一个字。 第一张,科技媒体头条:《codesafe正式公测:斯坦福博士团队打造的“最完整ai代码审查方案”》。 第二张,技术论坛热帖:《codesafe首周体验:企业级集成真的强》。帖主实测python、javascript、java三种语言,结论,“超越市面上所有的代码检测工具,集成文档写得比產品本身还好,开箱即用”。 第三张,赵文渊朋友圈截图。不知道谁传出来的。 只有四个字。 “產品说话。” bugkiller內测群里也在討论:“codesafe公测了啊,我们什么时候公测?” 苏念念没说话。韩路一也没回。 论坛首页,nullpointer的帖子还掛在热帖第一。七千赞。赵文渊三天没更新。 韩路一打开codesafe的官网。註册页上,第一周的数字还在涨。 他开了视界。 灰色的代码流从页面底下浮了上来,前端、后端、数据管道,codesafe的技术架构像透视图一样铺在屏幕上。 他看了几秒。关掉视界,关掉页面。 表情没什么变化。打开编辑器,继续写v0.4。 第二十四章 魔高一尺 周三下午。bug café。 老周看了一眼吧檯后面的钟。“一点你就来了,今天不加班?” “自由职业没有加班。”韩路一端著美式坐到角落的老位置。“只有隨时在班。” 老周哼了一声。“我当程式设计师的时候可不这么自我感动。” 韩路一打开电脑。 codesafe的官网还停在上次的標籤页。註册数涨到了三千八。好评测评从三篇变成了七篇。 每篇测评他都看了。 他喝了一口咖啡。下载了codesafe的公测版,本地装好,打开。 上次只扫了一眼轮廓。这次要看仔细的。 开视界。 灰色代码流从屏幕底部浮上来,像透视图一样在眼前铺开,前端框架、后端微服务、数据管道、模型推理层,codesafe的整个技术栈一览无余。 先说好话。 前端react加typescript,组件拆分规范,交互动效流畅。ui比bugkiller好看三个档次,他们有专门的前端团队,这不是一个人能追的差距。后端go写的网关,python跑推理,中间kafka做消息队列。教科书一样的技术选型。支持三种语言,检测速度不慢。企业集成的文档写得比很多大厂都好。 视界在整体代码质量旁边浮出一个评级標籤: 【代码质量评级:b+】 不差。斯坦福cs博士加谷歌的经歷不是白混的,这套系统的工程化水准放在创业公司里算顶尖。赵文渊有两把刷子。 韩路一继续往下看。 视界深入核心检测引擎。代码流变密,信息量陡增。他集中注意力,精力值开始加速消耗。 然后他看到,核心引擎上方,一行黄色warning缓缓浮现: 【架构风险:检测引擎採用全量遍歷+大模型推理路线|当前性能:代码库<5万行时表现优秀|warning:代码库规模超过20万行后,误报率將非线形上升(预估:5万行误报率3%→20万行误报率17%→50万行误报率41%)|根因:特徵提取未做分层剪枝,大规模代码库的上下文窗口溢出导致模型幻觉】 5万行,3%。 20万行,17%。 50万行,41%。 三个数字,非线形上升。 现在codesafe的用户全是个人开发者和小团队,代码库普遍在5万行以下。体验好,好评是真的。赵文渊不是在作假。他的產品在当前用户规模下確实能打。 但企业客户的代码库动輒几十万行。 这不是bug。bug可以修。这是架构选型的根本性问题,特徵提取没做分层剪枝,核心引擎直接用大模型全量推理。5万行以下没问题,上下文窗口装得下。超过20万行,窗口溢出,模型开始產生幻觉。检测结果从“准確”变成“瞎猜”。 要修?重写核心引擎。 至少三个月。 赵文渊大概率还不知道。公测期用户全是小项目,数据漂亮得很,他肯定觉得自己牛逼坏了。 等真接了企业单,才会发现这事有多棘手。 韩路一关掉视界。精力掉了六十多点。 他靠在椅背上,看著codesafe首页那行“最完整的ai代码审查方案”。 苏念念推门进来带了一股外面的风。围巾还没摘,径直走到韩路一对面坐下,掏出电脑。两人约好了在bug café碰面。 “我註册了codesafe。” “嗯。” “搞个对比测试?”她打开一个github仓库。“这个开源项目,python后端服务,大概八万行。各跑一遍。” 两台电脑同时开始跑。 bugkiller的进度条先到底。codesafe慢了快一分钟。 结果出来了。苏念念把两个窗口並排放在一起。 bugkiller报了50个。codesafe报了36个。 韩路一又开视界扫了一遍,51个bug。 他拿视界的结果当答案,逐条比对。bugkiller:50个里48个是真的,2个误报,漏了3个。codesafe:36个里32个是真的,4个误报,漏了19个。 看了二十分钟源码確认之后,他把误报数据告诉苏念念。 苏念念在本子上算。“误报率,我们百分之四,他们百分之十一。” 漏报率他没提,总不能跟苏念念解释自己为什么知道真实答案是51个。心里默算了一下,百分之六比百分之三十七。 八万行代码库上,codesafe的误报率明显上升了。 但数量还不是关键。 苏念念点开bugkiller第一条检测结果。bug描述下面掛著一段影响评估:“上线后影响预测:高並发场景下触发概率约12%,预估月均影响用户1.2万,修復优先级:p0。”后面还有三行修復路径。 她点开codesafe的同一条。 “发现潜在空指针异常。建议检查。” 一句话。没了。 苏念念看完两边数据,安静了一会儿。 “检测能力我们碾压他们。”她抬头。“他们语言支持比我们多,企业那套集成也做得早,但这些都是时间问题。” “对。而且他们的引擎在更大的代码库上会出问题。”韩路一说。“用户量上来之后自己会发现的。” 苏念念眯了一下眼睛。“你怎么知道?” “看架构猜的。全量遍歷加大模型推理,代码库规模一大,上下文窗口扛不住。误报就炸了。” 苏念念盯著他看了两秒。 没追问。 她合上本子翻到新一页,標题写了五个字,“公测方案v0.1”。 “竞品分析先过一遍。”苏念念边写边说。“codesafe团队十五人。融资额具体查不到,但按赵文渊的配置,保守估计是你全部积蓄的五十倍。” “谢谢,很提气。” “钱和人我们都不占优。但他重我们轻,这一点没变。所以不能跟他全面打,得挑一个他补不上的点。” 苏念念翻到新一页,笔尖点了点纸。 “就打影响评估。別的都不碰。” 苏念念指著屏幕上的对比。“codesafe告诉你有bug。bugkiller告诉你这个bug上线后有什么影响。这完全是品类差距。” “上线方案呢?” “先在论坛,v2ex和掘金髮帖,內测用户那批人让他们帮忙扩一波,马小飞那边再出一期视频。首日註册能破五百就算成功了。”她手里的笔没停。 “什么时候上线?“ 苏念念打开日历看了一眼,“假期回来第一天。上线方案加推广素材,趁假期搞定。五一大家放假,六號上班第一天刷论坛正好看到。再拖下去codesafe用户养起来就不好抢了。你写代码的时间够吗?” “够。” “那就六號。” 说著她就给马小飞发起了微信。 窗外天暗了。老周给他俩各续了一杯,把灯调亮了点。韩路一写代码,苏念念做方案。中间几乎没说话。偶尔苏念念抬头问一句“api文档改了吗”,或者韩路一甩过来一段逻辑让她確认產品流程。 八点半。老周开始收桌子。 “二位,打烊了。” 苏念念抬头看时间。“这么快?” 老周笑著摇摇头。 两人收拾东西出门,一起走向地铁站,一边继续討论上线方案。 地铁站口,苏念念忽然停下来。“路一。” “嗯?” 苏念念笑了笑。 “……没事。明天见。” 她进地铁站了。韩路一转身往家走。 到502门口的时候,差不多九点了。 门口放著一个牛皮纸袋。 他蹲下来拎起来。是一块小蛋糕,奶油抹得歪歪扭扭,上面用巧克力酱画了个笑脸。纸袋底下压著一张蜡笔画。 画上是一个戴眼镜的小人坐在电脑前。旁边趴著一只巨大的瓢虫。瓢虫的壳是红色的,上面三个黑色大圆点。 他翻到背面。歪歪扭扭的铅笔字,每一笔都很用力: “lu一哥哥加you” “加”字写反了。 韩路一站在门口吃了一口。奶油太甜,蛋糕有点硬。他又吃了一口。 剩下的放进冰箱。 手机亮了。 顾司玥:“林晚晴的case予微接了。初步评估胜算很大。” 他回了一句“谢谢顾律师”。 又一条。苏念念发了个飞书文档连结,“bugkiller公测上线方案v0.1”。 他点开看了两眼,回了句“收到,早点休息”。 韩路一把朵朵的画贴在显示器边上。 然后打开编辑器。 瓢虫瞪著两只大眼睛看他。 第二十五章 狗都不用 七天。 说出口很轻鬆。 韩路一仿佛又回到了在鼎盛的日子,每天只睡不到5小时。 一边飞速推进,分开用好几个ai agent推进代码,一边用视界把bug揪出来修好。 苏念念的上线方案从v0.1改到v0.4,上线流程精確到分钟级別。 马小飞拍好了第二期视频,韩路一看完让他把標题里“全网最强ai代码审查工具”改成“可能是最好用的ai代码审查工具”。 马小飞不服气:“有区別吗?” 韩路一:“有。被告的时候赔的钱不一样。” 五月六號。 苏念念凌晨三点还在改推广文案的措辞。韩路一凌晨四点修完最后一个边界条件。六点睡了三个小时,九点起来洗了把脸。 十点。bugkiller v1.0在官网上线公告,nullpointer名义发布。论坛、v2ex、掘金三平台同步。內测群推送。种子用户邮件触达。马小飞第二期视频同时发布。 发了。 韩路一坐在自己房间的书桌前,盯著註册后台的数字。 前三十分钟很安静。 3。 7。 12。 苏念念的消息过来了:“才十二?” “才半小时。” “我在海狸科技做codereview產品线,对外卖的那种。二十个人的团队,市场部配合推了一整轮,砸了八个月。对外发布第一天,註册五百出头。” “所以?” “所以我也要首日五百日活啊啊啊!” 第一个代码仓库接入了。python flask项目,六千多行。bugkiller跑了十四秒,报了七个bug。后台日誌显示用户点开了第一条检测结果,在影响评估那一栏停留了四十三秒。 十一点。47。 中午。89。 苏念念没在说话了。她只是不断发数字更新的截图过来。 下午一点。破一百五。增长曲线在加速,每个整点的增量比上一个整点多。口碑传播的典型斜率。內测用户开始往各自的技术群里扩散了。 韩路一喝了口水。手有一点抖。不是紧张,是三个小时的睡眠开始报帐了。 记住我们101看书网 马小飞:“视频发了三小时,后台显示一千多人从我视频点进bugkiller註册页。各位,我马小飞,科技区带货一哥。” 张浩然:“你视频底下第一条评论说“第二个bug的分析太准了”。你確定不是托?” 马小飞:“你才托。那是我真实粉丝好吧。” 张浩然:“行。路一,你这个自然增长率如果持续三天,周活数据可以拿去见投资人了。” 韩路一:“没想那么远。” 张浩然:“不远。信我。” 下午三点。帖子上了论坛热榜第三。马小飞的视频播放量八万。 帖子下面有一条长评在快速上升。 “我们公司从內测开始用了两个月codesafe。今天註册了bugkiller。同一个项目跑了一遍。bugkiller找到三个codesafe从来没报过的bug。其中一个,跟上个月炸过线上的那个是同一类问题,连接復用的竞態条件。上次那个炸了六万用户,排查了两天才修好。这个还藏著,codesafe完全没报。 “bugkiller的报告里写著:“高並发场景触发概率约12%,预估月均影响用户5-6万,修復路径:修改第1247行连接復用逻辑,预计改动3行代码。 “三行代码。上次同样的问题我们排查了两天。 “我说句理中客的:codesafe,狗都不用。” 六百赞。底下跟了一串类似的现身说法。 下午四点十二分。后台全红了。 api响应时间直接飆到超时。韩路一打开伺服器面板,请求量暴涨四十倍,来源ip高度集中,全指向/api/scan接口。 是ddos攻击。 开视界。 伺服器流量在视野中铺开。正常用户的请求是一条条细线,节奏规律。攻击流量完全不一样,三股暗红色的洪流从三个ip段同时涌入,密到把正常流量淹没了。 视界在攻击源上方浮出诊断: 【ddos攻击|类型:http flood + syn flood|来源:3个ip集群(某云华东节点)|目標:/api/scan|修復路径:1封禁47个攻击ip段2/api/scan启用频率限制(单ip≤5次/分钟)3开启cdn层ddos防护】 三步。 封ip段。加限流。开cdn防护。 七分钟。监控从红转绿。 他在內测群发了一句:“刚才断了几分钟,被ddos了,已处理。” “公测第一天就被人打?” “谁这么急啊。” “你一个人处理的?七分钟???” 韩路一没接话。打开官网写了篇事故復盘。攻击时间、持续时长、来源ip段、攻击目標接口,全部列出来。 半小时后论坛多了个帖子,標题:“猜猜谁会在bugkiller公测日打ddos。” 点讚第一:“我帮大家捋一下时间线哈,对比帖600赞是下午4点整,ddos攻击4点12分。十二分钟。就这?” 第二:“上次马甲帖点讚,这次直接ddos,下次是不是该上门砸电脑了?” 第三条是一个技术討论,很多人回覆:“我在某厂做安全运维的。说个数据吧,我们soc十二个人轮班,全套自动化监控,ddos响应sla是30分钟。这还是提前演练过无数遍、剧本都写好了的情况。他一个人,七分钟,从发现到恢復。离谱。” “楼上说的是大厂有预案的情况。小团队第一次被打正常流程是:臥槽怎么掛了→是不是代码炸了→查半天日誌发现是ddos→慌了→提工单给云服务商→等客服回復→一两个小时算快的。七分钟?我工单都还没提交。” “所以nullpointer到底是一个人还是一个团?一个人写產品一个人修线上一个人扛ddos,这是三头六臂?” “ddos都贏不了人家一个人。攻防七分钟,泡麵都没泡开。” 下午六点。 註册用户:476。 接入代码仓库:527个。 累计检测bug数:3847个。 476。苏念念的五百还差二十四。 晚上九点。 韩路一从冰箱里拿了瓶水。打开后台。 苏念念兴奋的打电话过来。 “路一!六百一十二!!!” “你知不知道这意味著什么!” “二十个人的团队,大厂资源,砸了八个月。” “对外发布首日註册才五百出头。” “你一个人做的產品。” “首日註册612。” “一个人干掉一个大厂团队!” 韩路一说:“是咱们两个人。” 苏念念沉默了一会。 “说真的。路一。你做到了。我们做到了。” 掛了电话,韩路一看向显示器旁边贴著的画。大瓢虫的红壳上有三个黑点。 他伸手把画纸翘起来的一角折了折。 手机又震了。顾司玥。 “恭喜。数据不错。” “顾律师也关注科技產品?” “关注我的客户。” 他回了句“谢谢”。 马小飞第二期视频播放量过了十五万。评论区顶到最高的一条:nullpointer大神求出山。 韩路一看了一会儿评论区。翻了翻。退出来。 打开和马小飞的对话框。 “下一期视频,做个专访?bugkiller创始人真人出镜。” 马小飞的回覆秒到:“???你要公开身份??” “產品到这个阶段,匿名没意义了。企业客户要签合同,总不能跟nullpointer签。” “!!!” “你来拍,拍一期“nullpointer是谁”,也给你涨点粉。” 好一会儿没回。韩路一还以为他在犹豫。 然后收到一条语音。点开,马小飞声音里压不住的兴奋快从听筒里溢出来。 “老韩你知不知道我等这一天等了多久!脚本我写了三版了你知道吗三版!明天!不,今天晚上就能拍,我把灯光全架好,” 韩路一哭笑不得:“別急。” 放下手机。 开了一下视界。 【lv.2|精力:58/250】 经验已经到82%了。 今早还是41%。 后台的bug检测总数停在4215。每一条记录背后都是一个开发者接入了仓库,bugkiller替他找到了问题。 经验条又跳了一下。 打开苏念念刚更新的飞书文档。《bugkiller公测首日復盘》,七页。拉到最后一行,標红加粗。 “建议儘快公开创始人身份,將nullpointer的社区信任转化为品牌资產。窗口期不超过一周。” “已经在安排了。” 第二十六章 裁到大动脉 五月七號。上午。 博客写好了。一千五百字,改了三遍。 標题:《一个失业的程式设计师,和他的bugkiller》 顾司玥审稿用了十一分钟。回了三条消息。 第一条:“可以。” 第二条:“四个不,不提鼎盛,用“前东家”。不提任何人名。不主动攻击。你讲你的故事,別给对方递把柄。” 第三条:“发之前让我看终版。” 苏念念看完改了一处。把“失业”改成“被优化”。 “好听点。而且带梗,打工人都懂。” “被优化这三个字有什么好听的。” “你信不信標题发出去,评论区第一条就是“优化他的人现在在想什么”。” 全文没提鼎盛。没提任何人名。通篇只讲四件事:被裁、接单、认清bug模式、做了bugkiller。 “今年二月,我被前东家优化了。工作五年,p7,年终b+。裁员通知来的那天我签了字,走出了大楼。 “接下来两个月,我每天做三件事。接自由开发的单子赚房租,写各种不同项目的代码,盯著bug发呆。 “所有bug都长得不一样,但犯错的方式就那么几种。同样的逻辑陷阱在不同项目里反覆出现,只是穿著不同的衣服。我把这些模式记下来,餵给了模型。 “这就是bugkiller。一个被优化的程式设计师做的bug检测工具。” 最后一段—— “我不是为了证明什么。但既然在这个行业这么多年,总得留下点什么有用的东西。” 顾司玥的反馈简短:“措辞没问题,没有攻击性敘事。“被优化”改得好,谁的主意?” “一个朋友。” 停了两秒。“脑子不错。” 发了。 然后炸了。 一小时。回復破五百。 两小时。赞数破三千。帖子从科技板块顶上了论坛首页。 “nullpointer居然是被裁的???” “等一下……他一个人做了bugkiller?一个人?没有团队?” “p7被裁做出这个水平的產品,他前东家什么眼光?” ““总得留下点什么有用的东西。”看完这句话,我坐在工位上沉默了五分钟。” “我被裁之后在家躺了三个月。人家被裁之后做了个碾压斯坦福博士团队的產品。做人的差距。” “年度最佳离职故事。没有之一。” 苏念念说对了。评论区確实有个高赞评论—— “优化他的人现在在想什么???” 四千多赞。 点讚第一的评论—— “这不叫优化。这是裁员裁到大动脉了。” 八千多赞。底下跟了一整排“大动脉”的接力。有人生成了一张图,一把手术刀切在动脉上,旁边標註“某大厂hr部门”。博客里没提公司名,评论区也默契得很,“某不愿意透露姓名的大厂”“某鼎某盛”刷了满屏。 下午五点。马小飞到了502。 两个灯架,一台索尼a7m4,一个无线领夹麦。三分钟在韩路一书桌前搭好简易拍摄区,手法比写代码还熟练。 “坐那。自然点。” “怎么才叫自然?” “你写代码的时候什么样,现在就什么样。別看镜头,看我。” 韩路一坐下来。身后是显示器,旁边贴著朵朵画的瓢虫。马小飞看了一眼那张画,调了下机位,把瓢虫框进了画面右下角。 “这什么?” “邻居小孩画的。” 马小飞打开平板上的採访提纲,前两版被韩路一以“太煽情”为由否掉后重写的第三版。 “行。先走一遍,不好再来。” 录製键按下去的前三分钟,韩路一像在做技术分享会。他讲bugkiller的架构,讲模式匹配的原理,讲误报率从8%压到3.8%的过程。马小飞听了一会儿,把手伸到镜头前挡了一下。 “停。” “怎么了?” “你在讲代码。观眾不在乎bugkiller怎么跑的,在乎你为什么做。” 韩路一想了一下。“因为bug有模式。” “不是。再上一层。” “因为被裁了。” “再上。” “因为写了几年的东西,被人改了几行就废了。” 马小飞竖起大拇指,重新按下录製。 这一遍顺了。韩路一说话越来越自然,到后面已经不看马小飞了,盯著自己的显示器在讲,像在跟另一个自己復盘。 他讲到被裁那天多拿了五万块的时候,马小飞忍不住说了一声“臥槽”。讲到“所有bug都长一个样”的时候,马小飞停下来认真听了十几秒。 拍了四十分钟。马小飞收镜头的时候顺手拉了个韩路一侧脸的特写,显示器上是bugkiller后台的数据面板,旁边贴著瓢虫画,窗外是老小区的天际线。 “这个镜头我封面用。” “隨便。” “不隨便。这个镜头值十万播放。” 收灯架的时候马小飞问了一句:“標题我想好了。《大厂裁了一个年薪百万的程式设计师,三个月后他做了一个產品把老东家按在地上摩擦》。” 韩路一:“不行。” “……哪不好了?” “按在地上摩擦。” 马小飞:“又不是我说的,是弹幕说的。我只是……提前预判了弹幕。” 韩路一:“你预判个头。改。” 標题最终妥协成《大厂裁了一个年薪百万的程式设计师,他一个人做了个轰动全网的產品》。马小飞坚持保留了封面上的两个大字,“打脸”。 五月八號。早上八点。视频上线。 马小飞剪到凌晨四点。成品快二十分钟,节奏是他的老风格。开头三十秒是博客金句,配打字机音效一个字一个字蹦出来。核心画面是bugkiller和codesafe以及其他几家老牌工具的对比数据,穿插马小飞本人的使用体验和韩路一的採访片段。 “我不做评价。数据都在屏幕上,各位自己看。但我说一句,我做了六年科技自媒体,第一次见到这么离谱的故事。一个人。被裁的。三个月。做了一个產品,公测首日碾压所有竞品。” “你跟我说这是网文我都嫌扯。” “但它是真的。” 十二小时。三十二万播放。 二十四小时。八十七万。 马小飞在404群里发截图。 “十万了!!!粉丝破十万了!!!!科技区一哥谁不服!!!” 张浩然:“冷静。你的涨粉是蹭韩路一热度蹭的。” 马小飞:“……闭嘴。” bugkiller后台的数字跟著视频一起起飞。註册用户从公测首日的六百一十二,涨到了一千四。亮牌两天,翻了一倍多。 苏念念发来消息:“你知道吗,现在论坛上討论最多的不是bugkiller好不好用,是你这个人。用户记住故事比记住功能快十倍。” 韩路一回了一个“嗯”。 关掉手机,继续写v1.1的热补丁。 同一天。晚上九点。 浦东,一家私人会所的包间。 赵文渊坐在靠窗的位子上,面前的普洱碰都没碰。 他今天刷了一整天“裁员裁到大动脉”。nullpointer的博客他逐字看了两遍,马小飞的视频他看了完整版。评论区有一条三千多赞的热评,“赵博士三千字定规矩,nullpointer直接甩数据。两周过去了,你们觉得谁贏了?” 他关掉了手机。 对面坐著一个人。五十出头,灰色西装,铂金袖扣。坐姿很板正,坐在那像在开会。 “赵博士。”对面的人先开口,声音很稳。“你天使轮的领投方,背后的lp结构了解吗?” 赵文渊看向他。“鼎盛有交叉持股。这不是秘密。” “交叉持股是明面上的。”王志远语气没变。“这里面有我个人的钱。” 赵文渊没有表情。天使轮拿钱时他只跟基金的gp见过面,对方说有產业资本背书,没提具体是谁。 他口袋里的第一笔钱,是眼前这个人放进来的。 “王总今天约我,不只是认亲吧。” 王志远嘴角动了动。不算真笑。 “nullpointer的真名叫韩路一。我手底下优化掉的。p7。去年在鼎盛做推荐算法,转化率提升37%。代码有九成是他一个人写的。” 赵文渊手指在杯沿停了一下。 “你觉得他一个p7,凭什么三个月做出这种东西?” 赵文渊没接话。这个问题他问过自己很多遍。 “我也想不通。但想不想得通不重要。重要的是,你打不打得过他。” 王志远端起茶杯喝了一口。 “一个人做產品是有天花板的。他现在是故事,不是公司。故事的热度会过去。” 赵文渊盯著他。“王总想说什么。” “鼎盛准备在代码审查方向布局。我会推动集团出资源。”王志远放下杯子。“但我不想从零起步。” 赵文渊听明白了。 天使轮是王志远个人的钱。鼎盛云是集团的资源。他要做的事情很简单,拿公司的渠道,餵大自己投的项目。韩路一是不是真的有威胁不重要,重要的是“bugkiller威胁论”能帮他在集团內部拿到审批。 “具体怎么合作?” “codesafe接入鼎盛云的开发者工具链。十五万家企业客户,代码一推上去就过你的审查引擎。” 听起来像天上掉馅饼。 但赵文渊是拿过风投的人,不是学生了。十五万家客户的渠道一旦接进来,codesafe的增长就绑死在鼎盛云上。今天叫合作,明天叫依赖,后天叫收购。他见过太多初创公司死在这条路上,被大厂的资源餵大,再被大厂的资源吞掉。 他看著王志远。这个人投了他的天使轮,现在又要把鼎盛的资源塞进来。进来的不是钱,是绳子。 但他也算了另一笔帐。靠自己的十五个人打贏韩路一,要烧多少钱,打多久? 窗外浦东的夜景很亮。 “让我想想。” 王志远站起来,整了整袖扣。 “不著急。但你要记得,机不可失啊。” 第二十七章 孤注一掷 赵文渊坐在井安区的办公室里,面前有两块屏幕。左边是codesafe后台,右边是论坛,中间放了一杯凉透了的美式。 自从“被优化程式设计师”的博客和视频爆火以后,codesafe日新增註册从均值一百五,掉到了九十出头。趋势很难看。 社区討论的风向也变了。两周前还是“codesafe vs bugkiller谁更好”,现在首页热帖標题是“被裁员工做的產品碾压斯坦福博士”。 技术比较变成了故事比较。 在故事这条赛道上,赵文渊没有贏面。 他回想起王志远的话,“不著急。但你要记得,机不可失啊。” 三天了,他还没回復。 十五万家企业客户的渠道。鼎盛云的品牌背书。听起来像活路。 但赵文渊在硅谷见过太多这种剧本的结局。小公司接了大厂的渠道,第一年是合作伙伴,第二年是核心供应商,第三年创始人的名字从官网上消失了。 他从谷歌辞职回国创业,不是为了给又一个大厂打工的。 赵文渊切到codesafe公测数据面板。 公测两周,用户好评率82%。项目检测准確率领先行业基准。有三家中型公司在聊採购。 数据不差。差的是敘事。 他点开公测反馈的收藏夹,翻了五分钟。一个前端团队说“codesafe帮我们上线前拦了两个p0”。一个独立开发者说“第一次觉得代码审查不是走形式”。 產品是好產品。 赵文渊关掉聊天记录,打开社交媒体的编辑框。 打字。 刪掉。 又打字。 又刪掉。 …… 五月十一號。下午两点。 赵文渊的帖子出现在技术论坛、推特和微博。同一段话,一字不改。 “nullpointer在《检测率就是一切》里说过一句话,“工具好不好,跑一遍就知道。” 我同意。 所以我提议:公开、透明、社区监督的横向评测。codesafe vs bugkiller。同样的代码库,同样的评判標准。全程直播,数据公开。 让產品说话。” 技术圈立马就炸了。 “臥槽赵博士要单挑nullpointer” “今年科技圈最好看的对决。没有之一” “独立开发者 vs融资团队,被裁p7 vs斯坦福博士” “来了来了,这才是正经比武” “骄傲不允许他认输,respect” 帖子二十分钟衝上热度第一。 苏念念截图发过来的时候,韩路一正在bug café吃老周新出的鸡排饭。他放下筷子,点开截图。 “看到了吗看到了吗看到了吗” “他用你的原话发的挑战” “他自己送上门了” 韩路一把筷子捡回来,夹了块鸡排,腾出左手打字。 “接。” “就一个字?” “他想比,就比。” 三十六度科技的老赵通过马小飞联繫上了韩路一,请缨主持直播横评。 韩路一同意。赵文渊那边也同意了。 评论区有人刷:“36度这波主持,流量赚翻了。” 五月十二號。社区投票选择测试项目。 韩路一以nullpointer帐號发了一条建议: “公平起见,测试方案应覆盖不同规模的代码库,毕竟用户的项目什么体量都有。建议分三轮:小型项目(3万行左右)、中型项目(10-20万行)、企业级大型项目(30万行以上)。同一批代码库,同样的评判维度。” 帖子底下清一色叫好。 “支持分梯度测试,这才是科学方法论” “nullpointer格局打开了” “这个提案本身就已经贏了一手,你提出公平方案,对方只能同意” 赵文渊回覆:“完全同意。覆盖不同规模才有说服力。” 有人在帖子底下提了个关键问题:“公开项目两家都可能预训练过,测出来算什么?得用没见过的代码才公平。” 三十六度科技的老赵出面协调,三家企业赞助商各捐了一个即將开源的私有项目,双方此前都不可能接触过。代码在直播前由第三方公证封存,直播时才解封接入。 最终方案確定—— round 1:某初创公司go微服务框架,约3万行。 round 2:某中型saas公司python数据处理平台,约12万行。 round 3:某上市公司java企业级核心系统,约35万行。 三十六度科技当晚发公告。 “ai代码审查工具公开横评直播,5月14日晚7点。三轮测试代码库由企业赞助方捐赠,双方此前均未接触。第三方公证封存,直播时解封。实时数据公开,社区全程监督。” 五月十三號。预约人数破三万。 技术论坛开了专帖:“codesafe vs bugkiller,你押谁贏?” 投票结果很微妙。55%押bugkiller,45%押codesafe。差距没拉开。 “bugkiller社区口碑更好,但codesafe有完整团队+企业方案+博士背书” “nullpointer一个人打十五人?你认真的?” “別看人少。上次那个用户说codesafe漏报了三个bug,” “个例” “你去看评论区。不止他一个人” 十几家科技自媒体出了分析文章,从各种角度预测结果。马小飞也想做预测视频,被韩路一一条消息摁住了。 “赛前別发。我刚提了公平测试方案,你这边立刻出预测视频,评论区第一条就是“nullpointer团队赛前搞舆论”。” 马小飞:“那我憋著?” 韩路一:“憋著。结果出来之后你剪精华,那个流量是预测视频的十倍。” 马小飞沉默了五秒。 “有道理。那我先把脚本准备好。” 五月十四號。 苏念念坐在海狸科技的工位上,面前开著一个空白的运营周报模板。她已经盯著它二十分钟了。 年假回来第一天,空降总监把她调到了运营支持岗。產品文档权限关了,数据看板进不去了,技术评审不叫她了。美其名“你先在运营这边过渡一下。” 下午两点的时候,產品群里弹了一条消息。她之前带的那个ai代码审查项目,这周要做用户访谈方案。新接手的人@了全组问谁有用户联繫人表格。 苏念念的电脑里就有。她做了三个月的用户调研,每个联繫人都是自己一个个加的。 她打了一行字,又刪掉了。 没人@她。 她缩小周报窗口,打开bugkiller的系统监控页面。比赛代码库封著拿不到,但bugkiller自己的状態得確保万无一失。她远程跑了一遍內部基准测试,检测引擎响应、並发处理、各语言解析器稳定性,全部绿灯。 给韩路一发了条消息:“系统没问题。就是不知道封的那三个项目什么情况。盲盒。” 韩路一回得很快:“能控制的都控制了。剩下的交给產品。” 苏念念看著这条消息,又看了一眼运营周报的空白模板。 五点半她准时下班。背包里装著笔记本电脑。 五月十四號。晚上六点五十五分。 三十六度科技直播间开了。 画面正中分屏,左边codesafe的logo,蓝底白字;右边bugkiller的logo,黑底绿字。 在线人数从八千跳到一万二,从一万二跳到一万八。还在涨。 弹幕已经刷起来了。 “来了来了” “博士別怂” “nullpointer加油” “我从下午三点等到现在” “谁也別说话等结果” 三十六度科技的演播厅不大,两排座位面对面摆著,中间隔了三米。左边codesafe,右边bugkiller。头顶四台摄像机,正前方一块大屏实时投数据。 赵文渊坐在左边的座位上。白衬衫熨的没有褶皱,领口的扣子鬆开最上面一颗。他朝镜头点了点头。 五米外,韩路一在右边座位坐下来。他穿一件白色卫衣,胸口写著“debug the world”。他关掉了所有多余的窗口,屏幕上只留一个终端和bugkiller的管理后台。 打开视界。 赵文渊头顶浮出一行淡蓝色的字。 【赵文渊|31岁|codesafe创始人/ceo】 韩路一多看了一眼。信息展开—— 【情绪:平静(隱藏:高度紧张)|核心诉求:证明技术价值|行为模式:背水一战型决策者】 平静是真的。紧张也是真的。这人是抱著孤注一掷的心態来的。 韩路一收回视线。 开场前五分钟,赵文渊站起来走过去,伸出手。 “nullpointer。久仰。” 韩路一站起来握了一下。“赵博士。產品做得不错。” 不是客套。赵文渊的方向没错,只是在错误的时间打了一场不该打的仗。 赵文渊笑了笑。“彼此。” 握完手各自回到座位。摄像机拍到了这一幕,弹幕瞬间炸了一波。 在线人数破两万。 主持人站到大屏幕前。 “各位观眾晚上好。欢迎来到三十六度科技“ai代码审查工具公开横评”直播间。” “规则此前已经公布。今晚,codesafe和bugkiller將在相同代码库、相同条件下进行三轮测试。所有数据实时呈现,社区全程监督。” “第一轮测试项目,go微服务框架,代码量约三万行。” “现在——” “开始。” 第二十八章 让產品说话 第一轮。go微服务框架。三万两千行。 大屏幕上两个进度条同时跑起来。左边蓝色codesafe,右边绿色bugkiller。在线观眾四万一千,还在涨。 codesafe的扫描速度稍快,进度条先到100%。 弹幕立刻刷起来。 “codesafe速度好快” “等等bugkiller还没跑完?” bugkiller的进度条慢了大概七秒,跟著到顶。 扫描结果不直接上屏。按赛制,每轮由五人技术专家组现场核验,三家公司技术负责人加两位开源社区资深贡献者,逐条確认真bug还是误报,再把核验数据投上去。 专家组围著显示器开始过结果。弹幕等得有点急,“快快快”“急什么人家要逐条看代码”。 六分钟后,核验结果上屏。 codesafe:標记总数24个,確认bug 24个,误报0个。误报率0%。 bugkiller:標记总数23个,確认bug 22个,误报1个。误报率4.5%。每条附影响评估和修復路径。 专家组组长拿话筒:“三万行级別两款工具都表现不错。codesafe多检出两个,零误报,乾净利落。bugkiller有一个误报,少检出两个,但每条结果附带的影响评估和修復路径是codesafe没有的功能。综合来看,第一轮codesafe略占优。” 赵文渊靠在椅背上,对著镜头点了点头。“两家產品各有所长。不过在標准化的代码审查场景下,检出率和精確率还是硬指標。” 弹幕滚得很快。 “codesafe第一轮贏了?” “零误报確实漂亮” 【写到这里我希望读者记一下我们域名 看书首选 101 看书网,1?1???.???超顺畅 】 “bugkiller那个影响评估挺有意思的,但检出少了两个” “完了nullpointer要输?” “才第一轮別急” 韩路一全程没什么反应。他看了一眼大屏上的数据,点了点头,然后低头喝了口水。 弹幕有人注意到了:“nullpointer这心態也太稳了”“输了一轮跟没事人一样”“是稳还是装的?” 苏念念窝在出租屋的床上看直播,被子裹到胸口,笔记本电脑架在膝盖上,屏幕左半边直播间右半边bugkiller后台。手机扔在枕头边充著电,旁边散著一小堆橘子皮。 第一轮结果出来的时候她盯著屏幕愣了两秒。codesafe贏了? 她打开微信给韩路一发了一条:“啊啊啊第一轮输了” 没回。她想了想,也对,他在直播,不可能看手机。 她放下手机,开始剥第四颗橘子。心里默算:第一轮三万行,codesafe贏。第二轮十二万行。第三轮三十五万行。 上次八万行的对比测试,bugkiller就已经拉开差距了。十二万行只会更大。 “第一轮本来就不是我们的主场。”她对著屏幕说了一句。没人听。 主持人:“感谢双方。第一轮结果已在屏幕上呈现。现在进入第二轮,python数据处理平台,代码量约十二万行。” “开始。” 进度条再次跑起来。 这一次,速度差异从第一秒就开始了。 bugkiller的绿色进度条匀速推进,跟第一轮节奏差不多。 codesafe的蓝色进度条明显慢了。10%正常,20%开始拖,到30%的时候像遇到了什么东西,顿了两秒才跳到31%。 弹幕比专家敏感。 “codesafe卡了?” “正常正常,12万行確实需要时间” “bugkiller没卡啊,你看那个绿条” “速度差距出来了” bugkiller先跑完。韩路一靠在椅背上,双手交叉放在脑后,等著。屏幕上bugkiller的结果已经静静地排好了,五十八条检出整整齐齐。 codesafe的蓝色进度条还在78%。 弹幕开始倒计时。“80了80了”“快了快了”“这个速度差……” 等了將近两分钟,codesafe才到100%。 弹幕:“第一轮只差七秒,第二轮差了两分钟”“十二万行拉开这么多?”“代码量翻四倍,差距翻十几倍” 专家组核验。这次比第一轮久。弹幕能看到专家们反覆对照代码,有人皱眉翻回去重看。 十一分钟后,核验结果上屏。 bugkiller:標记总数60个,確认bug 58个,误报2个。误报率3.4%。 codesafe:標记总数48个,確认bug 41个,误报7个。误报率17.1%。 专家组组长这次没笑。“codesafe有7个误报,其中4个是把正常的异常处理逻辑標成bug,这说明代码规模增大后,检测引擎的上下文理解在下降。bugkiller多检出的17个里,確认15个为真实bug。” 在线人数四万六千。弹幕越来越密了。 “17%???” “专家说了,规模一大就不行” “17%的误报率在生產环境里根本不能用” “bugkiller稳如老狗,3.4%” 赵文渊盯著屏幕上的数字。直播里不能暂停,不能查日誌。所有人都在看著他。 “十二万行项目確实对检测引擎有更高要求。我们现在正在进行下个版本的叠代和优化。” 韩路一的声音从右边传过来。不大,但收音很清楚。 “赵博士,开始第三轮吧。” 弹幕:“不给他解释的时间”“尊重对手的方式,快点结束” 主持人看了一眼两边。 “第三轮,java企业级核心系统,代码量约三十五万行。” 在线人数破五万。弹幕停了一瞬间,五万人同时屏住了呼吸。 第二十九章 道高一丈 “开始。” bugkiller的绿色进度条匀速推进。跟前两轮没有区別。10%、20%、30%,速度几乎一样。 codesafe的蓝色进度条从一开始就不对。 10%的时候还正常。20%的时候明显变慢。30%的时候几乎是在一格一格地挪。右侧实时面板上標记的问题数在跳—— 標记数:14...21...35... 弹幕先注意到的不是数字,是速度。 “codesafe卡住了?” “没卡,在跑,就是巨慢” “bugkiller三十五万行跟前两轮一个速度,codesafe这是怎么了” 40%。標记数跳到58。 弹幕开始算帐了。 “bugkiller扫同样的项目根本不卡,codesafe40%就跑了快三分钟?” “第二轮12万行慢两分钟,这次35万行怕不是要慢十分钟” “这不是线性增长,这是指数级的吧……” 50%。標记数79。进度条挪一格要七八秒。 “我现在的心情就像看著温度计往上走” “赵博士脸色不好看了” 韩路一坐在五米外,屏幕上bugkiller的扫描早就跑完了。他没说话。 codesafe的进度条还在爬。60%。70%。標记数过了一百。 弹幕已经从討论变成了围观。 “这已经不是竞爭了” 80%。 全场等著。 100%。標记总数:123个。 专家组核验了將近四十分钟。 等待期间,主持人拿著话筒走到两人中间。“核验还需要一些时间,我们先跟两位聊聊。赵博士,第三轮的感受?” 赵文渊坐在座位上没动。“等结果吧。” 三个字。主持人愣了半秒,转向韩路一。 “nullpointer这边呢?三轮下来什么感受?” 韩路一靠在椅背上,挺鬆弛的。“感受谈不上。说说bugkiller的影响评估吧,刚才专家组提过,我们每条检出结果会附带一个修復成本估算。这个功能底层逻辑是把bug跟业务场景做关联,不只告诉你哪里有问题,还告诉你这个问题上线之后会亏多少钱。” 弹幕:“nullpointer开始卖產品了”“这人心態是真好”“赵博士那边气氛不太对啊” 主持人追问:“这个功能是怎么想到的?” “接自由单的时候。甲方不关心你修了什么bug,关心的是修完之后他少亏多少。看多了就知道,bug本身不值钱,bug造成的损失才值钱。” 弹幕刷了一波:“这个insight值一个亿”“產品经理看了沉默” 主持人又转向赵文渊。“赵博士对影响评估这个方向怎么看?” 赵文渊看了一眼还在核验的专家组。“是个好方向。” 没了。弹幕开始刷省略號。 核验区那边,一位专家摘了眼镜揉眼睛,看了两遍同一段代码才落笔。 核验结果上屏。 codesafe:標记总数123个,確认bug 76个,误报47个。误报率38.2%。 bugkiller:標记总数132个,確认bug 127个,误报5个。误报率3.8%。 专家组组长拿起话筒停了一下。 “codesafe在三十五万行级別,误报率38%。误报集中在深层调用链和跨模块依赖,检测引擎处理大规模代码时出现了系统性偏差。不是个別误判。” 停顿。“bugkiller误报率3.8%,跟前两轮持平。一百二十七个检出里有几个修復成本估算精確到人天级別,这个能力我们在同类工具上没见过。” 在线五万三千人。 弹幕彻底失控。 “38%????” “系统性偏差,专家原话” “这不是代码审查,这是占卜” “博士三千字白写了” “让產品说话,產品说了,我是假的” 最后这条弹幕一秒之內被复製了几十遍。满屏都是“让產品说话,產品说了,我是假的”。 赵文渊从第三轮开始就没说过一句话。 他面前的屏幕亮著。89个检出,34个误报。他比任何观眾都清楚这些数字意味著什么。三万行的时候没问题,十二万行开始暴露,三十五万行全面崩溃。这不是参数调不调得好的问题,是检测引擎的核心架构在大代码库上扛不住。 他在公测阶段从来没跑过三十五万行的项目。 主持人等了三秒。 “赵博士,最后总结一下?” 赵文渊抬头看了一眼镜头。 “感谢社区的监督。我们会认真復盘。” 然后他站起来,摘下领夹麦放在桌上,走了。 摄像机跟了他两秒。直播间在线人数在他推门的瞬间又涨了三千。 弹幕最后一波高潮—— “完了。彻底完了” “赵博士確实体面。但体面有什么用,38%就是38%” “让產品说话。產品说:我死啦。” 苏念念在床上看到第三轮结果的时候一脚把被子蹬开了,差点把电脑踹下床。 她把三轮数据录进表格,截了六张弹幕精华图。bugkiller后台,直播还没结束的时候註册就开始涨了。 当天新增註册突破两千。 两天后。直播录像播放量破百万。“38%误报率”成了技术圈的梗。 马小飞的精华剪辑视频標题,《codesafe创始人说“让產品说话”,產品说了,“我是假的”》。三十万播放。 bugkiller註册用户一周之內从三千多飆到八千多。 赵文渊三天没发任何社交媒体动態。 codesafe內部发了一封全员邮件:暂停所有市场推广,全力修覆核心引擎。 韩路一在bug café靠窗的位子上喝咖啡。苏念念坐在对面,笔记本电脑开著,手指没停过。她在整理直播后的用户数据和註册趋势。 整理到一半,她头也没抬说了一句。 “他不该来的。” 韩路一端著杯子没接话。 “他的產品在小项目上是真的好。如果没有这场直播,他至少还有时间慢慢修。现在全世界都知道了。” 韩路一喝了口咖啡。 “他不会放弃的。” 苏念念抬头看了他一眼。 “这话什么意思?” 韩路一没解释。 五月十七號。直播三天后。 赵文渊坐在井安区的办公室里。两块屏幕都亮著,但他只盯著左边那块。 codesafe数据面板。新增註册连续三天为负,卸载的比註册的多。 投资人的微信消息他没回。第一条还客气,第二条直接了:“下周董事会我需要一个说法。”第三条他没看。 媒体的採访请求也没回。 他打开了一个从来没仔细看过的页面,大型项目测试日誌。 公测以来跑的都是五万行以下的项目。没人往大代码库测过。 现在他看了。全量ast遍歷在二十万行以上指数级增长,上下文窗口溢出,模型幻觉。架构选型的根本错误。 他知道怎么修。六到十二个月。帐上的钱撑不了那么久。 社区已经给codesafe判了死刑。“38%”三个字比任何分析文章都有杀伤力。 赵文渊靠在椅子上,闭了一会儿眼。 然后拿起手机。 通讯录翻到底部。三天前那个没回的號码。王志远。 三天前他还可以谈条件。 他按下了拨號键。 响了两声。 “王总。鼎盛云的事……直播的结果您应该看到了。我想问一下,您这边的意向还在吗?” 电话那头沉默了一秒。然后王志远笑了。 “赵博士,你觉得我为什么找你?” 赵文渊没说话。 “你的產品好不好,跟我有什么关係?”王志远的语气轻鬆得像在聊天气。“鼎盛云採购代码审查工具,走的是集团信息化预算。预算批了,钱就得花掉。花在谁身上,那是我说了算的事。” 顿了一下。 “你需要一张大单活下去。我需要一个合作愉快的供应商。这事从头到尾就这么简单。” 赵文渊握著手机,后背贴在椅子上。 “……明白了。” “明天下午,我让人把合作方案发你。细节咱们见面聊。” 赵文渊掛了电话。 手机放在桌上。屏幕灭了,映出他自己的脸。 他闭上眼。王志远说得很清楚了,產品好不好无所谓,38%还是3%无所谓。钱是预算里的钱,花不花、花给谁,是另一套逻辑。 三天前他还可以谈条件。现在他只能接条件。 筹码变了。 韩路一不知道这通电话。他在502写v1.2的新功能。 窗外老小区的灯一盏盏亮起来。 第三十章 两千九百九十九 苏念念做了一周竞品调研。 国內saas代码审查工具,她把市面上十一款產品的功能、定价、付费模式全拆了一遍。整了一张飞书表格,四个tab,十七列,三十二行。 发给韩路一的时候附了一句:“你先看,不急。” 韩路一晚上十一点回覆:“看了。” “pro版收个999吧,加几个功能就行了,便宜点跑量。” 苏念念盯著屏幕。 十七列。三十二行。 做產品经理这么多年,她学到的第一件事,开发者永远不知道自己的东西值多少钱。第二件事,开发者总觉得便宜点跑量就是定价策略。 她回了一条:“明天见面说。带上你的笔记本。” 第二天。bug café靠窗的位子。 苏念念打开表格第三个tab。竞品功能对比。 “先说清楚一件事。免费版和付费版的区別不是功能多一点少一点。它们面向的用户完全不同。” 韩路一端著美式等她说。 “免费版给个人开发者。扫bug,出报告,够了。一个人写代码一个人修,不需要別的。这一层不赚钱,让他用上癮就行。” “付费版给团队。团队需要什么?三样东西。” 她竖了三根手指。 “第一,影响评估。”她指了一下表格里那一列,整张表只有bugkiller有数据,其他十款全是空的。“个人开发者看到bug就修了,不需要知道这个bug值多少钱。但团队不一样。团队里做决定的人不是写代码的人,是批预算的人。你告诉cto“有个bug”,他说排进下个sprint。你告诉他“这个bug每个月亏六十万”,他今天就批加班费让人修。” 她看著韩路一。 “影响评估不是给程式设计师看的,是给他老板看的。免费版不开这个功能。想看bug值多少钱,升pro。” “第二,ci的api接口。” “这个已经有人在问了。”韩路一说。 “內测群里四个cto在问。因为个人开发者手动跑一遍扫描就完了,但团队要的是每次代码提交自动触发检测,pr不过bugkiller就不让合。这是工作流级別的集成。” 她看了韩路一一眼。“你知道接进ci以后意味著什么吧?” “迁移成本。” “对。换工具等於重配整条部署链。能嵌进基础设施的东西,不是999能定价的。” “第三,团队看板。bug趋势图、修復率、各模块健康度,每周自动生成报告。技术上不复杂,但对续费率影响最大,因为它让老板每周都能看到bugkiller在帮他省钱。他看到的不是工具,是roi。” 韩路一靠在椅背上。 苏念念接著说:“所以价格。个人免费,不动。团队pro,2999。” “怎么定的?” “大部分公司三千以下的saas订阅,技术负责人自己能批。过了三千要走採购流程找vp签字。2999是team leader能拍板的最高价。” 韩路一看了她三秒。“行。” 苏念念合上笔记本。她想说“十七列三十二行没白做”,但忍住了。 “pro版2999,下周上线付费模块。” …… 苏念念坐在海狸科技的工位上。面前两个窗口。左边是空白的运营周报模板。右边是bugkiller后台。 一条支付回调通知弹出来。 bugkiller pro·月度订阅·¥2,999.00·支付状態:成功·用户:sz市跨境达科技有限公司 她的手停在键盘上。 在海狸的三年。前两年是好的。第一年跟著老產品总监做智能客服系统,从需求调研到灰度上线,完整走了一遍。第二年自己带了数据看板项目,七个人的小组,三个月上线,dau做到一万二。怎么跟开发吵架,怎么在评审会上用数据堵嘴,怎么把一个想法从零变成產品,都是那两年学的。晋升答辩那天,老总监给她写的评语是“团队里成长最快的pm”。 然后老总监离职了。新来的產品总监叫方旭,从某二线大厂跳过来的,简歷好看但產品圈没人认识。他到岗第一周开產品方向討论会,ppt標题写著“海狸ai產品矩阵3.0”。苏念念坐在第二排,发现第七页的dau趋势图纵轴起始值不是零,视觉上斜率被拉高了三倍。她举手说了。方旭笑著点头:“好的,感谢,会后我们对齐一下。” 再也没有对齐过。 第三年。她的q1季度匯报做了四十页ppt。数据、反馈、规划,每一页都是她写的。匯报那天方旭说“我来讲,你在台下配合回答问题就行”。四十页讲完,vp说不错。全程没人提她名字。上个月海狸內部创新奖公布,她刷朋友圈看到同事转发,她带的那个数据看板拿了银奖。获奖人写的是方旭。她翻了三遍公告。没有“苏念念”三个字。 她对著屏幕上的2999看了很久。 刚才给韩路一讲的那张表,十七列,三十二行,十一款竞品全拆,不是天上掉下来的。是在海狸做了三年產品才练出来的手艺。但海狸已经不需要她了。 她拿起手机打给韩路一。 “你看到了吗?!” “看到了。” “第一笔!第一笔钱!!” 她听到自己的声音在抖。丟人。管不了了。 “2999块你哭什么?” “这是第一笔!第一笔!你懂不懂!”她吸了一下鼻子,“我在海狸三年,到最后连自己做的东西名字都留不下。你一个人写的產品,有人愿意掏钱了。两千九百九十九块。” “嗯。” 安静了两秒。她以为他要掛了。 “2999。” “……什么?” “第一笔收入,2999。这是你定的价,不是我说的999。” 苏念念张了张嘴,又合上了。 “我继续盯后台了。”她说。 周围海狸的同事看过来一眼。她把手机扣在桌上,对著屏幕上的支付通知发了很久的呆。 接下来一周。 第三天,14个。第五天,31个。第七天,47个。 苏念念在飞书上建了一个文档,《bugkiller付费数据周报#1》。第一行: 截至5月26日,付费用户47,月收入¥140953。用户留存率82.4%。 她在82.4%后面打了三个感嘆號,又刪掉了两个。留了一个。 saas赛道正常留存率30%到50%。82%意味著用户用了就不走。这个数字稳住了,bugkiller根本不需要烧钱获客。口碑自己会跑。 她把文档发给韩路一。他回了一个字:“嗯。” 海狸这边。 產品群里有人问“谁有q2用户增长数据的源文件”。苏念念打了一行字,那些表是她做的,q1到q2三十多张,来源、口径、公式全是她设的。打完准备发送的时候,另一个人已经回了:“我问问新来的实习生。” 她刪掉了那行字。 另一次更离谱。飞书公开频道里有人转发了方旭的產品路线图,里面有一张用户旅程地图。她一眼就认出来了,配色方案是她的,节点命名是她的,连第三个触点的备註错別字都没改。底下標註:製作人,方旭。 每天在海狸最开心的时候,是偷偷把瀏览器缩成一条缝看bugkiller后台。刷新一下,付费数字跳了一个。再刷新,又跳了一个。 手机震了一下。內测群里有个cto发消息:“请问有年费方案吗?我们走採购年付更方便。” 心在那边,人在这边,中间隔著的是一纸劳动合同。 她把手机屏幕朝下扣在桌上。面前的运营周报还是空的。 新一季度的okr定好了,上面只有一条:“协助完成运营支持相关工作。” 第三十一章 必输的案子 苏念念拎了一袋橘子敲502的门。 “我想辞职。全职来做bugkiller。產品、运营、市场,我一个人都能干。” 韩路一看著她。 “但你要给我股份。” “多少?” 她没犹豫。bugkiller的数据她比韩路一还清楚,註册过万,付费47,留存82%,月收入14万。定价方案是她做的,竞品分析是她做的,付费模块上线的运营节奏是她定的。这些活她已经免费干了三个月。 “20%。” 韩路一看了她两秒。 “行。” 她嘴角动了一下,没笑出来,又绷回去了。 “你连想都不想?” “你已经免费干了三个月。没有你就没有bugkiller。20%不多。” 苏念念没接话。拿了个橘子剥开,一瓣一瓣地吃。吃完了才开口。 “我去提辞职了。” 第二天她就交了辞职申请。按规定要提前三十天通知,方旭当天就回了邮件:“交接工作不多,不用等一个月了,月中走完流程吧。”快得不正常。正常领导都会安排交接,他连问都没问她手上有什么。 六月十五號。办离职手续。 hr把一摞文件推过来,社保转移、公积金封存、工资结算,一项一项签。签到最后一页的时候,hr翻出一份单独的文件。 “这份需要您確认一下。公司决定对您启动竞业限制。限制范围包括人工智慧、代码审查、软体质量保障及相关领域,期限两年。公司將按协议约定按月支付经济补偿金,第一笔月底前到帐。” 苏念念拿著笔没动。 hr顿了一下,又补了一句:“需要提醒您的是,协议中约定的违约金为年薪的三倍。” 她在离职交接单上签了字,走出海狸科技大楼。六月中的海城闷热,阳光白晃晃的,晒得人发晕。 (请记住 追书认准 101 看书网,????????s.???超讚 网站,观看最快的章节更新) 站在路灯底下,她把刚才的流程又想了一遍。方旭主动免了三十天通知期,连交接都不要,不是痛快,是等著的。调岗,关权限,不叫她开会,一步一步把她从核心业务上剥下来。等她终於走了,竞业协议是最后一击。 她打车来了韩路一的家,上了楼,敲502的门。 韩路一开门看到她的脸色,让开身。 她坐下来,把那份竞业协议从包里抽出来放在桌上。 “海狸启动竞业了。范围写的是人工智慧、代码审查、软体质量保障。违约金是年薪三倍,一百多万。” 说完了她才发现自己一直在攥包带。鬆开,手心有汗。 “你认不认识做劳动法的律师?” 韩路一看了她两秒。 “认识一个。博衡律师事务所的,之前合作过。很强。” 他掏出手机发了几条微信。苏念念坐在旁边,看著他打字,不知道该说什么。过了一会儿他抬头:“明天下午两点,我陪你过去。” 回到出租屋。苏念念坐在床上打开手机。 博衡律师事务所官网。合伙人页面。往下翻,顾司玥。 照片是標准商务照。黑色西装,白衬衫,细框眼镜,低马尾。看起来跟她年纪差不多。 往下看。 復旦大学法学院,十六岁自主招生入学。本科gpa全院第一。哈佛法学院llm,全奖。二十一岁回国入职博衡。执业六年。博衡所內最年轻高级合伙人。 苏念念看了两遍。 十六岁上復旦?这履歷也太强了吧! 她又翻了翻公开的案例记录和媒体报导。智慧財產权、网际网路合规、商业诉讼、竞业限制纠纷。评价清一色,“专业”“高效”“逻辑极强”。 韩路一什么时候认识这种人的。 她把手机扣在床上,看著天花板。外面的灯光从窗帘缝里照进来。 第二天下午。博衡律师事务所。 苏念念第一次走进这间办公室。 窗台上一盆绿萝,叶子绿得发亮。 顾司玥从桌后站起来。 本人比照片瘦,气场比照片冷。 她翻苏念念带来的材料,竞业限制协议原件、补偿金髮放通知、离职交接单。翻得很快,但不跳页。每一页都看完了。 看完之后没马上说话。 她把补偿金髮放通知抽出来,放在桌面最上面。 “苏小姐,先说结论。这个case不好打。” 顾司玥看著苏念念。 “大部分竞业纠纷,要么公司不付补偿金,要么限制范围写得太宽泛法院不认,程序上有硬伤,解除起来不难。你的不一样。海狸每个月按时打钱,限制范围精准卡在你的岗位上,程序上挑不出毛病。” 顾司玥问:“苏小姐,如果你坐在仲裁庭上,对面律师问你,“你在海狸科技负责的產品是什么?”你怎么回答?” “……ai代码审查工具。” “他会接著问:“你现在要加入的公司做的是什么產品?”” 苏念念没说话。 顾司玥把文件夹合上。 “一模一样的赛道,一模一样的產品方向。只看业务重合度的话,这是一个你必输的案子。” 第三十二章 他帮你贏了 苏念念攥紧了椅子扶手。 “那怎么办?等十二个月?” 顾司玥没有回答。她重新打开文件夹,把苏念念带来的三份材料又翻了一遍。竞业协议原件,补偿金髮放通知,离职交接单。 翻到离职交接单,她停了。 “你交接单上的岗位,写的什么?” 苏念念没明白她为什么问这个。“运营支持专员。” 顾司玥把离职交接单和竞业协议並排放在桌面上。一左一右。左边“岗位”一栏写著运营支持专员,右边限制范围写著人工智慧、代码审查、软体质量保障。 “你原来是產品经理。什么时候变的运营支持?” “年假回来第一天。五月十四號。產品总监方旭通知的,他空降来了半年,之前请年假也是他批的。” “调岗之后,ai代码审查项目的產品文档权限还有吗?” “没了。” “数据看板?” “第二天就关了。” “技术评审会议?” “不叫我了。一次都没有。” “飞书工作群呢?” “產品核心群踢了。只留了一个部门大群,发通知用的。” 顾司玥拿起笔,在便签纸上快速记了几行。权限关闭日期,群移除时间,评审参会记录。 “调岗到你辞职,中间多久?” “三周多。”苏念念想了想,“二十二天。” 顾司玥合上文件夹。 “他帮你贏了。” 苏念念没听懂。“谁?” “方旭。你那个空降总监。” 顾司玥把两份文件並排推到苏念念面前。 “竞业限制的前提是劳动者掌握商业秘密。仲裁庭判断这个前提成不成立,看的不是你曾经接触过什么,是你离职时的实际岗位和信息接触范围。” 她伸手指向离职交接单。 “你离职的时候,岗位是运营支持,文档看不了,看板进不去,评审一次没参加。对吧?” 苏念念点头。 “所以。”顾司玥拿起那份竞业协议,指了一下限制范围那一栏。“海狸自己的系统记录证明,你在离职前二十二天已经不接触ai代码审查业务的任何核心信息。权限是他们关的,群是他们踢的,会是他们不叫你开的。” 她放下协议。 “你不能一边说她不配留在项目上,一边又说她重要到不能去別的公司做同类项目。两个说法只能选一个。” 苏念念的手鬆开了扶手。她在这间办公室坐了半个多小时,后背一直在出汗。 顾司玥接著问。“你辞职前后,海狸还走了別的人吗?” “两个。一个前端,一个测试。同一个部门的。” “收到竞业通知了吗?” 苏念念想了想。“没有。” “同部门、同时期、同样能接触產品信息的人,都没启动竞业。只有你。”顾司玥的手指点了一下桌面。“这不是公司制度,是定向限制。仲裁庭对选择性执行非常敏感。” “所以……能贏?” “我不说能贏。”顾司玥打开电脑,开始敲字。“对方的逻辑链有一个断裂。这个断裂不是你造成的,是他们自己造成的。调岗是他们做的,权限是他们关的,选择性执行是他们选的。我只需要把这三件事摆到仲裁员面前。” 她抬起头。 “申请仲裁。” …… 浦东新区劳动人事爭议仲裁委员会。 走廊很长,日光灯白得刺眼,两边一模一样的门。空气里有股消毒水混著旧文件的味道。 苏念念坐在候审区的塑料椅上。旁边坐著韩路一。 “紧张?” “还好。” 她的脚在地上点了三下。 顾司玥从走廊另一头走过来。黑色西装,低马尾,文件夹夹在腋下。鞋跟敲在地砖上,节奏不快不慢。 “等一下不管对方说什么,你只回答我问你的问题。其他时候不要开口。” 仲裁庭不大。一张长桌,三位仲裁员坐在对面。左边是苏念念和顾司玥,右边是海狸科技的代理律师,戴金丝眼镜,四十来岁,面前一摞文件。韩路一坐在旁听席。 海狸的律师先陈述。 声音不急不缓。苏念念在海狸科技任职期间深度参与ai代码审查核心產品设计,接触用户数据、產品路线图和技术架构文档。竞业限制补偿金按协议约定按月足额发放,程序无瑕疵。bugkiller与海狸在研產品属於直接竞品,业务方向高度重合。 每一条都是真的。她確实做过那些事,接触过那些信息。 对方律师说完,合上文件。 仲裁员翻了一下材料,示意申请人代理人发言。 顾司玥站起来,打开证据目录。 “仲裁员好。关於被申请人主张的竞业限制条款效力,申请人提交两组证据。” 第一组。岗位变更与信息隔离。 离职交接单原件,岗位一栏:运营支持专员,非ai產品部產品经理。申请人向仲裁庭申请调取被申请人it系统记录,被申请人已提供。权限变更精確到分钟,5月14日上午9:47,產品文档库权限关闭。5月14日下午2:12,数据看板访问权限移除。5月15日上午10:03,產品核心飞书群移除。技术评审系统会议记录:5月14日至6月15日,ai代码审查项目召开技术评审七次,苏念念参会次数,零。 “离职交接单由被申请人出具,it记录由被申请人系统生成。申请人在离职前二十二天已不在ai產品部,不再接触代码审查业务的任何核心信息。” 她把列印件递给仲裁员。 第二组。选择性执行。 两份离职证明复印件放上桌。 “申请人同部门、同时期离职的两名同事,一名前端开发,一名测试工程师,均未收到竞业限制通知。竞业限制是公司统一制度,还是针对申请人个人的定向行为?如果是制度,为什么同岗同期离职人员不適用?” 海狸的律师翻了一下材料。没有回应。 顾司玥合上文件夹。没有继续。 仲裁员在看前两组证据。主审仲裁员抬起头,翻了翻手里的权限变更记录,转向海狸的律师。 “被申请人主张苏女士掌握核心商业秘密,但贵公司在她返岗当天就將她调离核心项目並关闭全部系统权限。请问贵公司是否仍然认为苏女士在离职时接触商业秘密?” 海狸的律师停了两秒。 “调岗是公司正常的人事安排,与竞业限制的启动是两个独立事项。” 仲裁员低头记了一笔。 顾司玥开口了。 “如果调岗与竞业无关,那请问被申请人启动竞业的依据是什么?是申请人在运营支持岗接触到的信息,还是她二十二天前在另一个岗位接触到的信息?” 她停了一拍。 “如果是后者,被申请人自己关闭了她的信息接触渠道,切断了她与核心项目的一切联繫,又主张她仍然是需要限制的对象。这个逻辑矛盾不是申请人造成的,是被申请人自己造成的。” 海狸的律师翻开一页文件,看了三秒,合上了。 仲裁庭宣布休庭合议。 苏念念坐在椅子上没动。顾司玥在旁边整理文件,一页一页按顺序放回去。 十四分钟。 仲裁员回来了。 裁决结果:竞业限制条款对苏念念不具有约束力。海狸科技应停止发放竞业限制经济补偿金,並返还已扣款项。 苏念念听到“不具有约束力”六个字的时候,脑子嗡了一下,什么都没想起来。 走出仲裁庭。 走廊还是一样长,日光灯还是一样白。她在走廊椅子上坐下来。腿有点软。 顾司玥站在旁边打电话,已经在聊另一个案子了。语气跟刚才庭上一模一样,没有起伏。 韩路一靠在对面墙上等。 苏念念坐了两分钟。站起来。 “顾律师。” 顾司玥掛了电话看向她。 “你好可怕。” 顾司玥笑了一下。庭上从没见过这个表情。 “但是好可靠。” “律师费帐单之后发你。”语气还是冷的,但她从包里抽了一张纸巾递过来。 苏念念接过来。手心全是汗。 顾司玥点了一下头,转身往电梯方向走了。脚步声渐远,在拐角消失了。 苏念念看著那个背影。刚才在庭上,顾司玥翻证据的速度、提问的节奏、停顿的时机,全都精確到秒。 从头到尾,这个人就没觉得会输。 韩路一走过来。 “走吧。” 两人从仲裁委出来。外面下著小雨。六月底的海城,闷热裹著水汽。 “韩路一。” “嗯。” “我以后全职做bugkiller了。產品、运营、市场,我全包。” “你之前不就在包了吗。” 苏念念愣了一下,然后笑了。 “那不一样。之前是帮忙。” 她在雨里站了两秒,没打伞。 “现在是我的了。” …… 晚上。韩路一给顾司玥发消息。 “顾律师,我们准备註册公司。股东协议、智慧財產权归属这些,需要你帮忙擬。后面常年法律顾问也想找你,有兴趣吗?” 过了半分钟。 “营业范围和股权比例发我,我出一版框架。” 又过了几秒。 “常年顾问不打折。对了,苏小姐的律师费,等公司註册完可以开给公司。你的也是。” 他搁下手机。窗外雨还在下。 手机屏幕亮了一下。苏念念发来一条飞书连结。 《bugkiller全职运营计划v1.0》。三十七页。 文档创建时间:今天下午4:12。 仲裁庭散场是三点半。 第三十三章 瓢虫 七月一號。顾司玥发来三份文件:股东协议、智慧財產权归属协议、公司章程。韩路一65%,苏念念20%,期权池15%。两人分別签完,拍照回传。顾司玥一小时內確认。 三號,海城源码科技有限公司营业执照核准通过。註册资本一百万,认缴。经营范围写了半页纸。 註册地址填的是顾司玥推荐的一个浦东创业孵化器。实际办公地址,bug cafè。 七月的海城,蝉从早叫到晚。 中午的时候,手机亮了一下。 林晚晴的微信:“今晚过来吃饭?” 隔了几秒,又来一条:“不是什么大餐,就是家常便饭。” “好啊。我几点过去?” “五点半来就行。” 五点半,韩路一敲了501的门。林晚晴来开门,穿一件浅灰色的居家t恤,头髮扎成高马尾,碎发別到耳后。身后厨房里传来油烟机的声音。 “来啦,进来坐。”她侧身让开,“排骨还在燉,你先坐会儿。” 501的门韩路一路过了好几年,第一次从外面走进去。 玄关很窄,一双大人的布鞋和一双小孩的粉色凉鞋並排放著。林晚晴递过来一双一次性拖鞋。客厅不大,跟502一样的户型,但布置的风格完全不同。茶几上铺著一块碎花桌布,角落堆著朵朵的蜡笔和画纸,冰箱门上贴满了手掌大的涂鸦,太阳、花、一只巨大的瓢虫。 墙上掛著四五幅插画,装了简单的白色画框。 一只猫在窗台上晒太阳。雨天的弄堂口,积水映著半盏路灯。一个小女孩在蒲公英田里跑,裙摆被风吹成一个弧。 每一笔都轻轻的,顏色也轻轻的,像怕把纸弄疼。 “路一哥哥!!” 朵朵从房间里衝出来,整个人掛到他腿上。五岁的小孩力气不大,但抱得很紧。 “路一哥哥你来我家了!你看你看,” 她举起一张a4纸。上面是一只大象,四条腿粗细不一样,鼻子画成了一条彩虹。 “好看。”韩路一蹲下来。 “它鼻子会变顏色!因为它喷的水是彩虹做的!” “有道理。” “那你给它起个名字。” “彩虹大象。” 朵朵想了一下。 “不好听。叫胖胖。” “行,胖胖。” 林晚晴在厨房喊了一声“朵朵別缠著人家”,但语气没有真的在制止。 朵朵拉著韩路一在客厅转了一圈。她要给他看她所有的画,所有的贴纸,还有她的宝贝,一个塑料的万花筒,幼儿园老师送的。 “你看!转一下就变了!” 韩路一接过来转了一下。花花绿绿的碎片拼成一个图案,再转一下,又变了。 “好不好看?” “好看。” 厨房传来炒锅的声音,油在跳。 饭桌是摺叠的小方桌,平时靠墙收著。林晚晴搬出来支在客厅中间,刚好够三个人。 四菜一汤。红烧排骨、油爆虾、清炒丝瓜、凉拌黄瓜,一小锅番茄蛋汤。米饭刚才电饭煲里盛出来,还冒著热气。 韩路一夹了一口排骨。 “怎么样?”林晚晴站在旁边没坐下来。 “好吃。” “真的还是客气?” “排骨软烂程度刚好,酱汁收得乾净,葱花是最后放的,还有香味没散。” 林晚晴愣了一下,低头坐下来,给朵朵碗里夹了一块排骨,筷子把骨头剔了才放进去。朵朵吃得满嘴都是酱。 “路一哥哥,你天天来吃好不好?” “朵朵。”林晚晴拿纸巾擦她嘴角。 “好嘛好嘛——” “人家有自己的事。” “小朵,你妈妈做饭也很辛苦的啊。”韩路一夹了第二块排骨。 吃到一半的时候林晚晴放下筷子,像是找到了一个合適的空隙。 “谢谢你介绍的律师。”声音不大。“沈律师今天打电话告诉我的。保全令通过了。” 韩路一点头。 “她很好。”林晚晴停了一下。“不像我想像的律师那样。她很有耐心。问了很多我以为不重要的事,朵朵幼儿园在哪里、平时谁接送、他上一次来是什么情况。问完了跟我说,“林女士,我们有优势,別怕。”” 她低头扒了一口饭。 “他不能再隨便来了。” 这句话说得很轻。像是在跟自己確认。 “嗯。” 朵朵听不懂大人在聊什么,专心对付碗里的排骨。 “对了,” 林晚晴放下筷子,起身去房间拿了一样东西。 一幅画。巴掌大,画在一块棉布画框上。 一扇老式木门,他们楼道里那种,暗红色的漆有一点剥落。门把手上停著一只瓢虫。瓢虫画得很细,触角弯弯的,翅膀上五个黑点。门的木纹也细,能看出一圈一圈的年轮。 “朵朵一定要我加上瓢虫。”林晚晴把画递给他。“我就画了一只。” 韩路一接过来。棉布框很轻。 “谢谢你介绍的律师。也谢谢……之前的事。” “不客气。”韩路一说。 朵朵凑过来看。“妈妈画的!我也画了一只!但是我画的瓢虫有十一个点!” “为什么是十一个?” “因为我想让它多几个!” “合理。” …… 林晚晴开始收碗。韩路一站起来要帮忙,她侧身挡了一下。“你坐著。” 语气不重,但没有商量的意思。 朵朵钻到沙发上拽他袖子,翻出自己的画册一页一页给他看。每一页都要解释,这个是幼儿园的小猫、这个是妈妈、这个是冰淇淋怪兽、这个是路一哥哥。 “等等,这个是我?” 纸上画了一个很长的火柴人,戴著巨大的圆眼镜,身边飘著一只跟人一样大的瓢虫。 “对呀!你和你的瓢虫!妈妈说你是捉虫子的人。” “……差不多。” 林晚晴在厨房洗碗,水声哗哗的,偶尔隔著门笑一声。 韩路一抬头扫了一眼501的四周。墙上那几幅插画,色彩是暖的、流动的,像一个沉默的人把所有没说出口的话都画在了纸上。 角落的画架上有一幅画了一半的插画。一只橘猫趴在窗台上,窗外画到一半没画完,铅笔线条还在。旁边的小桌上摊著几张列印的参考图,看著像是接的商单。 “路一哥哥你明天还来吗?”朵朵仰著头。 “看情况。” “什么情况?” “忙不忙的情况。” “不忙就来。”朵朵用一种不容拒绝的语气说。 “朵朵该洗澡了。”林晚晴从厨房出来,手在围裙上擦了一下。 “不要,” “洗完澡可以看一集小猪佩奇。” 朵朵立刻从沙发上跳下来。“路一哥哥拜拜!明天见!” 说完拖著拖鞋跑进卫生间。 韩路一站起来。“我回去了。晚饭很好吃。” 林晚晴把他送到门口。走廊的声控灯亮了,白光把两扇门照得一模一样。 “把画掛起来。”她说。 “我会的。” 502的门关上了。 韩路一把那幅瓢虫画放在显示器旁,就在朵朵之前画的那张大瓢虫蜡笔画边上。一大一小,各有美感。 他拿起手机给顾司玥发了条消息。 “谢了。林晚晴的保全令。” “谢什么。沈予微出的庭,跟我有什么关係。” 过了两秒。 “不过你推荐得不错。她的case不难,予微处理得很好。” 帮朵朵就像在帮小时候的自己,但他不会说出来。 顾司玥也没再说话。 打开电脑,准备继续写代码。 手机亮了。苏念念。是一张截图。 科技媒体首页—— 《重磅:codesafe宣布与鼎盛云达成战略合作,正式接入鼎盛云开发者工具链》 副標题:鼎盛云15万企业开发者將一键接入codesafe代码审查引擎。 截图下面跟了一行字: “巨头入局了。” 第三十四章 围剿 八月。bug cafè。下午三点。 苏念念的笔记本电脑摆在桌子上,六个瀏览器標籤页排成一排,飞书文档、后台数据、媒体截图。她从下午一点半开始说,说到现在,冰拿铁喝了两杯,嗓子有点哑。 韩路一只手撑在桌子上,托著下巴,一直在听。 数据他看过了。七月的月报苏念念凌晨四点发来的,十一页。註册用户18400,月活12300,付费团队142个,月收入42.6万。看上去还在增长。 但拐点已经出现了。 “七月第一周日新增註册390,第四周402。蓝线基本没动,个人开发者还在增加。”苏念念指著屏幕上两根折线。“但橙线,新增付费团队,第一周12个,第四周3个。断崖。” “付费转化率从3.1%跌到1.4%。”她切到另一个页面,指了一下右上角的数字。“七月推理成本,八万三。” 韩路一看著报告,没有说话。 “每次扫描跑一遍模型,大仓库跑好几轮。月活一万二,一个月差不多十万次推理请求。”苏念念说。“五月份月活三千的时候,推理成本是两万一。” 用户增长了四倍,成本也增长了四倍,收入却只增长了两倍。 “免费用户占月活88%,吃掉四分之三的算力,贡献零收入。”她合上电脑。“企业不敢掏钱,个人不用掏钱。照这个趋势,年底推理成本能吃掉月收入的三分之一。” 苏念念说的都是推理成本。但想留住客户,模型得一直叠代,训练成本才是真正的大头。 这些韩路一都知道。七月中旬codesafe正式接入鼎盛云的那天晚上,苏念念发了截图过来,他就知道后面的事不会简单。但一个月下来,局面比他们预想的还难看。 媒体上两周內冒出了六篇行业分析文章,四个平台,论点整齐得像同一份大纲拆出来的,“独立开发者產品灵活但缺乏企业级保障”“大厂入局標誌著赛道进入成熟期”“真正的壁垒不在检测率,在生態集成和合规能力”。通篇没提bugkiller的名字,但每一段都在说bugkiller。 客户那边也开始鬆动了。五个付费用户问过退款政策,他们在观望,等著看bugkiller怎么应对鼎盛。 “念念。”韩路一说。“你有什么想法?” “先搞清楚对方在打什么牌。” 她把飞书文档翻到一页关係图,五个方框围著中间一个圈,箭头从四面八方射进来,每个方框旁边贴满截图和连结。 “渠道、媒体、客户、资本、定价,五路同时来的。”苏念念依次点著方框。“渠道和媒体你都看到了,那六篇文章就差把我们名字写上去。但客户这条线更脏,” 她放大一段微信截图。“codesafe的销售直接约我们付费客户的技术负责人喝咖啡,拉人进什么“企业諮询委员会”。至少三家被接触过。” 手指滑到最后两个框。“vc圈有人放话,赛道格局已定,不建议再投创业公司。社区也在传codesafe要推免费试用,还没官宣,风先放出去了。” 她把手从屏幕上收回来。 “五条线,同一个时间窗口,同一个节奏。有人在统一指挥。” 韩路一看著她。 “都是你整理的?” “我又不是今天才知道这些。”苏念念的语气平淡。“一个月了。我一直在跟进呢。” 韩路一没说话。他盯著那张图看了几秒,然后闭了一下眼。 再睁开眼,视界打开了。 面板浮现。苏念念归纳的五条线,视界同样標了出来,协同度极高,所有向量指向同一策略中心。跟她的判断一致。 他没在上面停留,顺著关联线往深处走,找她看不到的东西。 几秒后—— 【codesafe核心检测引擎重构进度≈35%,架构缺陷未根治】 【接入鼎盛云后优先完成api適配与部署改造,核心能力改进延后】 【大项目误报率仍>25%】 【bugkiller技术优势:检测率/误报率/影响评估三项指標均领先,短期不可追平】 每一条都標得清清楚楚。 韩路一往下看。 【修復路径:——】 空的。 他盯著那一栏看了三秒。视界在那个位置闪了一下,像是在尝试生成什么东西,然后又灭了。 lv.2的视界能给代码bug开修復路径,改哪个文件、改哪一行、怎么改。但面对“品牌不如人、渠道不如人、资本不如人”这种系统级的竞爭劣势,它给不出答案。 这不是一个bug。这是一个他写不了补丁的问题。 韩路一关掉视界。 苏念念还在等他说话。 “技术上我们还是领先的。”韩路一说。“codesafe接入鼎盛云之后忙著做api適配,大项目误报率还是老问题。” 苏念念没问他怎么知道的。她早就习惯了韩路一偶尔冒出来的“技术直觉”。 “所以呢?” “但是没用。”韩路一站起来走到窗口。“企业客户做採购决策的时候,检测率排在评估表第四列。前三列是“品牌你听过没”“这公司会不会明天倒闭”“出了事谁来兜底”。鼎盛这两个字就是前三列的满分答卷。” 苏念念靠在椅子上,盯著天花板。 “那我们不打前三列。” 韩路一转过头。 “鼎盛云的生態是封闭的,他们做不了社区。”苏念念坐直了,重新打开电脑。“sdk全部开源。让社区自己写插件,vscode、jetbrains、github action、gitlab ci。除了核心引擎不动,接口全打开。” “模型不开源。” “当然不开源,开源的是脚手架,不是大脑。”苏念念说。“鼎盛做得了渠道碾压,做不了社区生態。十五万企业开发者是鼎盛的,但插件生態可以是我们的。” 韩路一想了想,说:“成本的问题也要一起解决。加一个个人pro,月费九十九。不限私有仓库、完整影响评估报告、优先队列。免费版扫描上限从每月六十次收到二十次。现在重度用户有多少?” “月扫描超四十次的,八百到一千个。转化15%,月收入多一万二到一万五。”苏念念说。“覆盖不了推理成本,但至少能止血。而且这批人用习惯了,也很在公司推团队版。” “可惜,这不是破局啊。”苏念念说。 韩路一看著她。“先活下去,我们会找到机会的。” 两人沉默了一会儿。 苏念念站起来收电脑。“明天出方案。sdk开源、个人pro定价、免费版限额,三件套。” 她把笔记本塞进那个跟她人差不多大的双肩包。 “路一,你越来越像一个合格的ceo了。” 说完,她向门口走去。 …… 晚上九点。502。檯灯。 手机上两条未读。 马小飞:“老韩,我今天刷到好几篇黑bugkiller的软文,要不要我做期视频懟回去?素材我都截好了。” 跨境达的李总:“韩总,最近有猎头联繫我们技术负责人,说是codesafe在组建企业客户諮询委员会。你们这边……还好吧?” 回了马小飞:“先不用,等我再想想。” 停了一下,又加了一句“谢谢”。 回了李总:“一切正常。感谢信任。” 打开代码编辑器。v1.3的影响评估模块重构,苏念念上周提的需求,企业客户嫌大项目扫描慢。 敲了几行代码。刪了。又敲了两行。 bugkiller后台数据看板掛在右下角。今日新增註册341。跟上个月差不多。新增付费团队:0。 註册还在涨,却没人掏钱。 他闭了一下眼。下午那份诊断报告的残影还浮在意识边缘,五条攻击向量標得清清楚楚,底下那一栏修復路径,空著。 就像一张ct片子,病灶標得明明白白,但开不出药。 显示器旁边贴著朵朵的蜡笔大瓢虫和林晚晴的棉布瓢虫画。一大一小。 手机响了。是顾司玥。 “明天上午九点方便吗?合规这块我梳理了一版框架,数据安全、隱私条款、责任免除,大的方向先跟你过一下,没问题的话我这边直接推进。” 韩路一顿了一下。“很急?” “以你现在的处境,很急。” 第三十五章 出事找谁 上午九点。博衡律师事务所。 顾司玥办公桌上摊著三份文件。韩路一刚坐下,她把最上面一份推过来。 “先看第三页。” 標准化的企业软体採购合规审查清单,某公司內部文档,logo和抬头打了码。第三页第四项被红笔圈出来: 供应商数据安全资质审查,是否提供第三方安全审计报告、数据处理白皮书、用户隱私合规声明。 “哪来的?” “三个企业客户的法务部。”顾司玥拧开保温杯。“措辞不同,但要求都是一样的。” 韩路一翻了翻另外两份。確实。 “bugkiller有这三样东西吗?” “没有。” “那法务审核你就过不了。”顾司玥喝了口水,语气跟念合同条款似的。“產品评估排在法务审核后面。这一栏空著,技术团队连试用的机会都没有。” 韩路一把文件放在桌上。 他没接话。 他打开视界。 三份採购清单的数据浮现出来,第四项的位置亮起橙色。橙色標出的是流程风险。 【warning:合规资质缺失→企业採购流程阻断点】 【影响范围:年营收>5000万的企业客户(约占目標客户池85%)】 韩路一往下看。 【修復路径,】 【1第三方数据安全审计报告(周期2-3周)】 【2用户代码数据安全白皮书(可与1並行)】 【3隱私合规声明(模板化,1周內)】 【预估成本:12-20万|修復成功率:95%+】 他盯著面板。 “你有方案了。” “约你来就是为了谈这个。”顾司玥从旁边拿出一张名片。白底黑字,中盾信息安全技术有限公司。 “博恆客户。做信息安全审计的,服务过十几家上市公司。”她说。“市场价起步二十万,联繫人姓周,你自己去谈。” 韩路一把名片翻过来看了一眼。周彦,业务总监。 “行。” 顾司玥把另一份列印稿推过来。七页,標题,《bugkiller数据安全白皮书·框架》。 “用户代码过你伺服器吗?” “过。云端推理,saas標准架构。” “那谁能看到?” “没人。传输端到端加密,推理完即时清除,不留存。伺服器上包括我在內没有任何人能碰原始代码。” 顾司玥看了他一眼。 “你不需要看?” “不需要。模型训练的数据是我自己標註的,跟用户代码无关。” 安静了一秒。 “那就把这个写清楚。”她在第三页点了一下。“技术架构说明、数据流向图、第三方审计背书、合规声明。採购表上『数据安全措施』那一栏,填上连结就行。” 韩路一翻完七页。每页都有执行项和时间节点。审计两到三周,白皮书同步推进。 “还有一件事。” 韩路一看向她。 “你那个竞品绑在鼎盛云上。我查了他们的服务条款和api文档。” “你连他们的api文档都看了?” “看文档是本职工作。”顾司玥语速慢了半拍。“鼎盛什么体量你清楚,云服务、搜寻引擎、企业协作、gg系统。用户代码在那套基础设施上走一圈,经手多少中间系统、多少人有权限,他们自己未必说得清楚。” 她在列印稿上点了一下。 “你是独立saas,数据链路乾净,审计起来简单。这是你的结构性优势。白皮书里的『端到端加密、处理即刪、零人工接触』你应该拿出来宣传。” 韩路一笑了笑。 “顾律师。你最近帮忙好像越来越多了。” “別自作多情。你是我增长潜力最高的客户。”顾司玥说这话的时候没看他,正站起来给绿箩浇水。“科技公司合规需求只会越来越大。帮你跑一遍全流程,以后同类客户就是现成方法论。我在投资自己的时间。” 韩路一没接话,把名片收进口袋。 “什么时候开始?” “白皮书初稿周五之前出,你和苏念念审技术细节。” 韩路一站起来。 “顾律师,谢谢了。” “份內的事。” …… 下午两点。bug café。 苏念念把笔记本电脑屏幕转过来。飞书文档,標题用红色加粗:《bugkiller应对方案v1.0》。 “看完再说话。” 韩路一从头翻到尾。四部分,执行项、负责人、时间节点,不写一个废字。 核心判断放在第一行: “不跟鼎盛打资源战。做大厂做不了的事。” sdk全面开源让社区写插件,鼎盛生態封闭,这条路他们走不通。影响评估护城河加固,v1.3扫描速度翻倍。合规配合顾司玥方案。最后一条是品牌,“bugkiller在企业客户眼里就是一个github连结。要上云市场、要见投资人,得有个像样的脸。” 韩路一看完抬头。 “什么时候写的?” “没熬太晚,不用担心我。”苏念念端起杯子喝了口水,眼底有遮不住的黑眼圈。 “大项目扫描速度优化一倍,我预估两周。” “十天。” “影响评估模块要重写缓存层,” “十天。”苏念念看著他。“鼎盛每多一天免费试用,我们就多流失一天的观望客户。两周和十天差四天,四天可能差两个付费用户。” “……行。” 苏念念合上电脑。 “路一,说句实话。这套方案能撑多久我不確定。鼎盛要是真砸钱做免费,我们的付费转化还会继续跌。”她的声音有些低。 苏念念先回家了。 韩路一在角落老位置写代码,老周在吧檯后面擦杯子。店里没几个客人,空调吹得桌上的餐巾纸角翘起来。 老周端了杯水走过来,放在韩路一笔记本旁边,顺势在对面坐下。 “最近不太对劲啊小韩。” “还好。” “还好?”老周把抹布搭在肩上。“这礼拜来的开发,一半聊的是你那个bugkiller。最近鼎盛在和你打对台?” 韩路一停下敲键盘。“你都听说啦。” 老周往椅背上一靠,翘起二郎腿,头看向窗外。 “我以前待过一家公司,做运维监控的。六个人,技术比nagios好两代,客户用了都说牛逼。” 韩路一看著他。 “后来崑崙推了自己的监控服务,免费捆绑,技术稀烂。我们cto说没事,產品好他们追不上。”老周说到这停顿了一下。“半年,客户走了七成。我们当时拼了命的叠代,但是没用。有个客户说,用崑崙全家桶,出了事找崑崙,用你们的,出了事找谁?” “后来呢?” “后来cto带著四个人去崑崙上班了。”老周站起来,拿起韩路一的空杯子。“產品確实好。但好没用,得让人相信你。” 他走了两步,又回头。 “我也不是想教你什么,我也不知道怎么办。我就是说,这事我见过,光埋头写代码扛不住。” 韩路一看著老周走回吧檯。 …… 晚上九点。502。 下午跟中盾的周彦见了一面。视界看到了对方的底价,八万。周彦要衝业绩,韩路一没砍到底,最后谈到十万。对方还多送了一项渗透测试。 韩路一打开bugkiller后台看了一眼今天的数据。新增註册294,比上周日均少了五十。付费团队没有新增。 收件箱里多了两封邮件。 第一封,一家小公司的技术负责人:“韩总您好,因公司q3预算收紧,我们决定暂停bugkiller pro订阅,待预算恢復后优先考虑重新开通。感谢理解。” 第二封,深圳一家独立游戏工作室:“產品很好,只是我们最近现金流有点紧,先暂停一下。等缓过来第一时间续上。” 两个客户。一周內。 韩路一关掉邮件,打开技术论坛。 首页有一篇帖子被顶上来了。標题:《bugkiller vs codesafe:一个独立开发者的真实数据对比》。 帖主是个做saas的独立开发者,id眼生,韩路一没见过。他把自己的项目分別用bugkiller和codesafe跑了一遍,逐条截图对比检测结果,检测率、误报率、影响评估精度,三项数据摆在那里,结论一边倒。 帖子末尾一句话:“工具好不好,自己跑一遍。我的数据在这里,欢迎来查。” 评论区三百多条,清一色力挺bugkiller。 这个帖子不是韩路一安排的。他甚至不认识帖主。 他看了几秒,没有点讚,没有回覆。关掉论坛,继续写v1.3。 影响评估模块的缓存层重构敲到一半,太阳穴突然抽了一下。 不是普通的疲劳。 像有什么东西在脑子里膨胀,从后脑勺往前顶,持续了一两秒,又消失了。 韩路一揉了揉眉心。手指碰到额头的时候摸到一层薄汗。 视界面板在意识边缘闪了几下,像信號不好的老电视。 他眨了一下眼。 面板右下角,经验值的数字跳了一下—— 200/200。 第三十六章 蓝图 面板右下角的数字刚跳完,疼痛就来了。 比上次猛得多。上次升lv.2像电脑强制重启,扛一扛就过了。这次持续了十几分钟,流鼻血,视觉变形,枕头上洇了两块深色印子。而且不只是疼。感觉像有个施工队在大脑里开工,先拆东西,然后往里装。 韩路一从床上坐起来的时候,头还闷闷地胀,像高烧刚退。 鼻血已经止住了。 他出神的看著房顶上那根坏了半截的灯管,半年前就这样了。 他打开视界。 【lv.3|精力:127/500】 精力上限从250跳到500。当前127,升级过程吃掉了一大半。 范围又变大了。lv.2时他坐在502里,感知边界刚好覆盖这栋楼。现在还没下床,就能感觉到更远的东西。远得多。 他下了床,走到窗边。 数据节点铺满了视野。密密麻麻的灰色小点悬浮在夜色里,每个点是一个物件、一段管线、一台设备。全部摺叠。上次从五米扩到五十米,满屏標籤差点把他淹死,花了好几天才学会过滤。这次范围不知道翻了多少倍,但没有一个標籤主动展开。 他试了试。弄堂口路灯杆上有个灰点,聚焦,標籤弹开:【路灯控制模块|故障:光敏传感器漂移→白天偶发亮灯】。鬆开注意力,標籤缩回灰点。看哪展哪,不看就收。 对面楼三层,一台空调外机亮著橙色:【压缩机轴承磨损|预计寿命:4-6个月】。楼上楼下还有几个人物基础面板,自动摺叠成灰色,只露出姓名和年龄,他没展开。再远。弄堂拐角过去,bug café。老周早关了门,设备没断电。意式半自动咖啡机上掛著个老熟人:【加热模组温控偏移+2.3°c】。以前得坐在店里才看得见。 他试著再往外推。最边缘的数据点闪烁不定,像信號只剩一格。再远,空的。 两百米。大概。 他在窗边站了一会儿。弄堂安静下来了。灰色数据点浮在夜色里。 韩路一转身走到书桌前坐下。笔记本屏幕还亮著。v1.3影响评估模块的代码改到一半,光標停在第427行。他盯著屏幕,没继续写。 围剿。五条攻击向量。苏念念的方案。顾司玥的建议。老周的故事。 现在该怎么办? 他没有刻意去问视界。但这个念头刚一成形,面板上出现了他没见过的东西。 以前的视界像手电筒,照哪亮哪。对著一段代码,告诉他哪行有bug、怎么改。对著一份合同,標红漏洞条款。对著一个人,给出基础资料和情绪。点对点。一个输入,一个输出。 这次没有输入。“现在该怎么办”。他没有对著任何人、任何代码、任何文件。视界接住了一个没有目標的问题。 大脑中那块新分区微微发热。 面板中央浮出一整块区域。不是標记,不是诊断报告,是蓝图。结构化的,分层的—— 【路径编译·启动】 【目標:bugkiller商业化存活路径】 【编译中……】 两秒。 【路径编译·完成】 【step 1/5:合规资质补全】 【执行:第三方安全审计+数据白皮书+隱私声明】 【资源:12-15万+法律支持|周期:2-3周|成功率:96%】 【step 2/5:產品差异化加固】 【执行:v1.3影响评估模块重构,大项目扫描速度x2】 【资源:全职开发10天|成功率:91%】 【step 3/5:社区生態开放】 【执行:sdk开源+插件接口(vscode / jetbrains)】 【资源:5天开发+社区文档|周期:2周|成功率:88%】 【step 4/5:渠道突破】 【云供应商排他绑定→长期存活率34%(致命陷阱)】 【检测到非排他替代路径——需定向编译|预估消耗180+精力|当前精力不足】 【step 5/5:融资】 【执行:天使轮/ pre-a|估值区间500-1200万】 【成功率:64%(依赖step 4路径选择)】 【—————————————————】 【当前存活概率:31%】 【五步完成后存活概率:待step 4编译后確定】 韩路一盯著面板。 三十一。 精力面板在右下角跳了一下:【lv.3|精力:94/500】。光看这一张清单,消耗33点。 他没急著关。从头又看了一遍。 步骤一,合规资质。顾司玥已经对接了中盾做审计,白皮书写了七页。步骤二,產品差异化。苏念念方案里的原话,“影响评估是护城河”。步骤三,社区生態开放。视界消耗33点精力编译出来的最优路径,有一半已经在进行了。 步骤四。 韩路一盯著那行红色的34%。 他研究过业內云服务商的合作现状。年保底三百万。首页推荐位。联合营销预算。 如果昨天有人把这份合同拍在桌上,他大概率会签。 他看了一眼右下角——94。替代路径要180。今晚跑不动了。 韩路一打开备忘录,把五步清单从头敲了一遍。面板上的信息不留存,关掉就没了。 打到步骤四那行的时候,他停顿了一下。接著写下“替代路径待编译”。 存了文件。给苏念念发了条消息:“明天上午见一下?我有些新的想法。” 窗外水果摊收摊,传来铁皮车轮碾过地砖的声音。 他准备关掉视界。 面板边缘闪了一下金光。 不是他主动扫的。lv.3被动拾取,两百米全覆盖。 隔壁。501。 【林晚晴|创作天赋:前0.3%|视觉敘事能力:极高|商业价值实现比例:4.7%】 前0.3%。他扫过几百个人的面板,跑进前1%的一只手都数得过来。 韩路一转头看了一眼显示器旁边並排的两幅画——朵朵的蜡笔火柴人和巨大瓢虫,林晚晴的棉布画框,门把手上停著一只小小的瓢虫。 他翻回备忘录,在清单末尾加了一行。 关掉视界。精力面板消失前闪了一下:【61/500】。 第三十七章 太极 七点不到,韩路一就醒了。 视界打开,精力面板浮在意识边缘,【lv.3|精力:500/500】。升级之后恢復速度快了不少,一觉睡满。 他把注意力对准了那个昨晚跑不动的问题。step 4。渠道突破。定向编译。 念头成形。大脑深处那块新分区开始发热。 【路径编译·定向·启动】 【目標:bugkiller渠道突破:排他 vs多云中立】 【编译中……】 比昨晚的全局编译要久。五秒。十秒。面板上的数据结构像拼图一样逐块落位。 【路径编译·定向·完成】 【路径a:排他绑定(单一云平台)】 【长期存活率:34%(—)】 【风险:渠道依赖→定价权丧失→平台政策变更时无退路】 【路径b:多云中立(非排他·多平台同时入驻)】 【长期存活率:78%(↑↑)】 【最优执行序列:二线云(意向)→一线云(撬动)→反向收网】 【反序执行(先一线)成功率:23%】 【关键槓桿:多云合作达成前vc主动接触率12%→达成后67%】 【精力消耗:183】 右下角跳了一下:【lv.3|精力:317/500】。 他把“34”和“78”写进备忘录,合上本子。 九点出头,门铃响了。 韩路一给她开门的时候头髮还是乱的。她拎了两杯咖啡,在门口站了一秒。 “昨晚没睡好啊?” “想事情想的有点儿晚。”韩路一接过咖啡。冰美式。 “你有什么新想法?” “是关於渠道的。” 苏念念拉了把椅子坐下。 “你方案里写过要上云市场。”韩路一说。“你当时想的是找哪家?” 【写到这里我希望读者记一下我们域名????????????.??????】 “青岳或者天枢吧,口碑好门槛低。崑崙也可以聊,但条件肯定不好谈。” “如果他们要求籤排他协议呢?” 苏念念想了想。“条件够好的话,排他也不是不能接受。” “不能接。” “……你昨天到底想到什么了?” 韩路一没有马上回答。 他喝了口咖啡,把杯子放下。 “签排他是死路,我们最多落到和赵文渊一个结局。” 苏念念看著他。 “我昨晚想了一宿,把帐算清了。”韩路一说。“鼎盛把codesafe绑在自己的云上,看起来是优势。有了十五万企业客户零成本接入,渠道碾压我们。 “但反过来想,这意味著codesafe只能在鼎盛云上用。 “现在整个市场,经过验证的ai代码审查產品就两个。一个绑死在鼎盛,另一个是我们。青岳云、天枢云、崑崙云,这些平台上的开发者想用ai代码审查,有几个选择?” 苏念念楞住了。 “一个。” “鼎盛帮我们做了市场教育。” 苏念念把咖啡放在桌上,整个人往前坐了坐。 “你是说不是我们去找云平台,是云平台需要我们。” “鼎盛越绑越紧,其他云越没有替代品。它的渠道优势越大,我们对所有竞爭云的稀缺性就越高。” “太极。”韩路一说。“它越用力推,越把我们推向它所有对手的怀抱。” 苏念念站起来在屋里走了两步,又走回来。 “具体怎么做?” “先找二线。青岳或者天枢,谁先接触都行。拿一份意向,拿著它去找一线。崑崙是鼎盛最大的对手云,它看到二线在接bugkiller会紧张。鼎盛有codesafe,青岳天枢有bugkiller,崑崙什么都没有。这个信號可以撬动崑崙。” “崑崙签了呢?” “那青岳和天枢就更不会落下了。三家我们都签。” “条件呢?” “分成,渠道推荐,首页流量,到时候再细谈吧。” 苏念念眉头皱了一下。“你这个方案听起来像在走钢丝。” 韩路一笑了,“本来就是。” “我担心两件事。”苏念念伸出两根手指。“第一,青岳天枢愿不愿意先给我们意向?就算他们给了,会不会把我们当枪使?拿我们去打鼎盛,然后反手也要排他。” 韩路一没急著反驳,只是把她那两根手指按回去一根。“先说第一件。他们怕的是“没人用”。他们最需要的是一个能让开发者留下来的明星工具。鼎盛给他们做了市场教育,他们不接,我们就去找別家。” “那怎么保证我们不被当枪使?” “所以才要三家同期落定。”韩路一说。“不是我们去求崑崙,是让崑崙意识到:它再慢一点,就真的什么都没有了。它一旦上桌,就不会允许自己把牌局打成“绑定我”,那是给鼎盛送人头。” “如果他们自研呢?” “从立项到上线,至少要半年,鼎盛现在宣传的势头这么猛,自研来不及了。” 苏念念看著他。“你確定他们会按你的逻辑走?” “不確定。”韩路一说。“但我確定,签排他协议,我们会按他们的逻辑走。” 苏念念坐下来,翻开笔记本电脑,开始敲字。韩路一看著她打字的速度,指尖几乎没有停顿,执行计划的框架已经在她脑子里成形了。 “接触渠道。”苏念念头也不抬。“你有没有人脉?我倒是有几个前同事,但都不在相关岗位。” “不用绕一圈。”韩路一说。“中盾那边我有直接对接的人,销售和项目经理都在。弱关係反而好用,他们不在云厂商內部站队,只在乎成交。” “行。”苏念念敲了两下键盘。“那就从中盾的池子里撬第一条线。” “谈判底线。分成要多少?保底呢?” “这个得算。取决於各家云的开发者体量和我们在上面已有的客户数。”韩路一想了想。“交给你了,说实话,定价这块我不太行。” 苏念念停下来看了他一眼,“你现在说话越来越不像程式设计师了。” 韩路一看向了天花板,“只当程式设计师不够用了啊。” …… “方案框架拉好了。”苏念念把屏幕转过来。 执行时间表、接触优先级、谈判节点、分成模型草案。四页。韩路一从头看到尾,没做改动。 “还有一件事。”苏念念往下翻到最后一页。標题加粗:品牌升级。 “上云市场总得有个像样的品牌。bugkiller在企业客户眼里就是一个github连结加默认配色的网站。谈云合作、见投资人,连个正经logo都没有。” 韩路一没接话。 他的目光移到了显示器旁边。 两幅画並排钉在墙上。左边是朵朵的蜡笔画,歪歪扭扭的火柴人,旁边蹲著一只巨大的红色瓢虫,比人还高。右边是林晚晴的棉布画框,锈跡斑驳的门把手上停著一只小小的七星瓢虫,翅膀微微张开。 瓢虫。 “我知道找谁了。” 苏念念顺著他的目光看过去,看到了那两幅画。 “隔壁那个画画的姐姐?” “她是自由插画师。走正式的商业委託,品牌视觉设计,按市场价付费。” “你確定?品牌设计和插画不太一样,我们可以找专业的设计公司。” “她就是专业的。” 苏念念看了他一眼。没再说什么。 苏念念走之前把执行方案终稿发到飞书群。韩路一看完点了个赞。 韩路一打开微信,翻到周彦的对话框。 昨天刚签完审计合同,今天就找人家要资源,节奏是快了点。但渠道接触越早越好,哪怕只是先摸个底。 “周总,想请教个事。中盾做安全审计服务的客户里,有没有云平台那边的?我们后续想聊聊云市场入驻。” 发了。 两分钟后,周彦回了条语音。韩路一点开听了一遍。 大意是:有的,青岳云、天枢云都是他们客户。不过韩总你这个时间点直接聊估计不太行,对方要看资质的,等你们审计报告出来,我帮你引荐,到时候拿著报告去谈,比空手强得多。 “明白了。审计那边儘快推,出了报告第一时间找您。” 周彦:“放心,两周半差不多,到时候我帮你约。” 韩路一退出对话框。 两周半。审计落地之后,才有资格上桌。路径编译给了方向,但棋子要一步一步摆。 手机响了。张浩然。 韩路一接起来。 “老韩,忙不?” “不忙,怎么了?” “有个人你应该见见。”张浩然的声音压低了一点,像在办公室偷打电话。“叫陆明洲,做fa的,华筹资本的高级经理。” “fa?” “financial advisor,帮创业公司做融资的。这哥们儿经歷挺丰富的,上財出来先在德勤干了三年审计,考了cpa,后来跳去投行,再转fa,看过几百个早期项目。之前打球认识的,后来偶尔约饭。今天吃饭我隨口提了你们的事,他当场就问了我二十分钟。” “问什么?” “產品技术路线、商业模式、现在什么阶段。我说你问我也不懂,你找他本人聊。”张浩然顿了一下。“他说周末有空,想先聊聊。不是那种正式pitch,就是喝杯咖啡。” “行。你把我微信推给他。” “发了。”张浩然说。“对了,这人说话比较直,別介意。” 掛了电话。韩路一看了眼微信,已经有好友申请了。头像是一张证券交易所的照片,暱称直接是本名“陆明洲 frank”,签名栏写著“数字不会骗人”。 他通过了申请。 第三十八章 豪赌 韩路一敲了敲501的门。 门开了一条缝。朵朵先探出脑袋,喊了一声“韩哥哥”,又被林晚晴轻轻拉回去。 林晚晴出来的时候围裙上沾著蓝色的顏料。 “林姐,有件事想找你帮忙。” “什么事?” “品牌设计。我们公司的。logo、视觉体系、ui风格指南,一整套。正式商业委託,按市场价付费。” 林晚晴愣了一下。 “怎么找我啊?” “我喜欢你的画。” “我主要做插画,品牌设计不是……”她停了一下。“我没做过完整的品牌项目。” “做过商业设计吗?” “接过散单。电商详情页、公眾號配图。”林晚晴擦了擦手上的顏料。“不算品牌设计。” “想不想试试?” 朵朵在旁边喊:“妈妈画什么都好看!” 林晚晴没理女儿。她看著韩路一,安静了几秒。 “邻居嘛,不用花钱,我帮你画就是了。” “那不行。”韩路一说。“商业委託就是商业委託。你要是不收钱,我不敢提修改意见。” 林晚晴笑了一下。 “那预算多少?” “你报价。你觉得值多少就报多少。” “……我回去想想。明天给你报价单。” “行。”韩路一把bugkiller的网站连结发到她微信。“我是做ai编程的。” 他指了指朵朵那幅蜡笔画的方向。 “產品叫bugkiller。你画的瓢虫我很喜欢,我们可以还用这个元素。” 林晚晴眨了一下眼。 “瓢虫吃蚜虫呀。”韩路一笑著说。 林晚晴看了他一会。 “我试试。” 韩路一走出501的时候,朵朵追出来塞了一张纸给他。蜡笔画,是一只飞在天上的……蛇? 他把画折好放进口袋。 …… 周六下午,虹口一家独立咖啡馆。 陆明洲约的地方,说这家手冲不错。 韩路一到的时候对方已经坐在靠窗的位置了。他瘦高,穿著深蓝色polo衫,戴一副金丝眼镜。手腕上戴著一块表,看著不便宜。 看到韩路一进来,陆明洲站起来。 “韩路一?我是frank。” 两人握了握手。 陆明洲先点了两杯手冲,问韩路一有没有忌口的豆子。韩路一说隨便。 “你们公司在浦东?”陆明洲问。 “老小区,办公室就是我住的地方。” “创业初期都这样。”陆明洲说。“我之前看过一个做saas的团队,四个人挤在loft阁楼里写代码,夏天空调坏了开窗户,蚊子比用户多。” 韩路一笑了两声。 “张浩然提过你好几次,说大学室友出来创业了,做ai方向的,技术很牛。我一开始根本没在意。技术很牛的创业公司太多了。” “那他吹牛了。” 陆明洲摇了摇头。 “前两个月那个直播。”陆明洲说。“bugkiller和codesafe的对比,我看了回放。一个个人开发者把斯坦福博士的团队碾压了。確实牛逼。” “你也看技术直播?” “我看数据。”陆明洲接过服务员端来的咖啡,闻了一下。“直播之后我查了bugkiller的社区,github上的討论区比很多成熟產品都活跃。issue区有人自发写插件、翻译文档、提feature request。这种社区参与度不是花钱能买到的。” 韩路一也接过咖啡。 “后来又看到那个独立开发者写的对比帖,逐条截图,检测率、误报率、影响评估三项全面领先,评论区三百多条。”陆明洲喝了口咖啡。“那个帖子不是你安排的吧?” “不是。” 安静了几秒。陆明洲放下杯子,换了个坐姿。 “你现在月活多少?” “六万三,免费加付费。” “收入呢?” “一百四十七个团队用户,月收入四十二万。” “毛利?” “扣掉推理成本和伺服器,60%吧。” 陆明洲在手机上划了两下。“留存率?” “社区87%,付费93%。” “87%。”陆明洲重复了一遍这个数字。“我做这行这么多年,能跑到87%社区留存的,很少见。” 韩路一看著他。 “你花了挺多时间研究我们。” “断断续续一个多月。”陆明洲没藏。“从直播之后就在关注。你们四月底公测,五月中直播之后数据起飞,七月鼎盛开始围剿,整条线我都跟著。” “然后呢?” “张浩然上周吃饭的时候提了你一嘴,我才知道原来他室友就是nullpointer。”陆明洲笑了。“所以不是他引荐我,是我等了一个月等到了一个机会。” 韩路一喝了口冰美式。 “你想帮我们做fa?”韩路一问。 一个fa跑来约创始人喝咖啡,聊数据,夸產品,怎么想都是来做生意的。虽然他也是第一次经歷。 “不是。”陆明洲说。 “不是?” “fa是帮你们找钱,拿抽成走人。”陆明洲放下咖啡杯。“我不想做中间人。” 他往前坐了坐。 “你们现在的状况我看得很清楚。產品牛逼,社区也活跃,但鼎盛的动作把增长压住了,圈子里都在传“赛道格局已定”。你们现在估值被压到五百到八百万之间。” 韩路一没说话。 “但这些人看的是静態数据。他们没看到留存率87%意味著什么,没看到你的飞轮已经转起来了。”陆明洲说。“bugkiller的问题不是產品,是生存。活过这一关,估值得翻十倍以上。” “那你想做什么?” “加入你们。” 韩路一愣了一下。 “我有资本圈的资源和关係,有融资全流程的经验,能帮你们把財务、股权、融资整条线跑起来。”陆明洲说。“你们接下来要做的事,谈判、cap table升级、见vc,每一件都需要一个跟钱打过交道的人。” 韩路一开了视界。 【陆明洲|34岁|华筹资本·高级经理】 【情绪:冷静(隱藏:强烈兴奋)|核心动机:高回报押注】 他是认真的。 他不是来做生意的,他是来赌博的。 “你现在赚多少?”韩路一问。 “一百多点。” “放弃一百万来加入一个被围剿的两人创业公司?” “我过手过十几个亿了。最好的项目从我手上过一遍,然后进了別人口袋。”陆明洲说。“我要自己上一次桌。” 他顿了一下。 “热门赛道估值高,我出不起价。你的估值被鼎盛压低了,但產品好,有潜力,我相信自己的眼光。现在是你最低谷的时候,我可以帮你走出低谷。” 韩路一没急著表態。“你觉得我们现在最大的问题在哪?” 陆明洲掏出手机,翻到一张提前画好的股权结构图。 “註册的时候律师帮你们做了標准架构,两个自然人加期权池,现在够用。但你接下来要见vc的话,这个结构得升级。”他指了指图上几个空白的框。“创始人vesting,股份分四年成熟,是给投资人信號说你们拿钱了不会跑路。反稀释条款,防止后面的钱把你们稀释没了。esop发放机制、行权条件、退出规则,现在是只留了池子,但规则没写。vc的法务那不够用的。” 韩路一看著那张图。这些他確实没想过。 “还有一个。”陆明洲收起股权图,划到另一页。“你们现在月收入四十二万,增长被压住了。你可能觉得问题是鼎盛。但站在vc的角度看,问题是你没有一个能讲通的增长故事。从四十二万到四百二十万,甚至四千二百万,这条路在哪里?靠什么?分几步?每步需要什么资源?你如果回答不了这个问题,没有一个vc会坐下来听。” 韩路一没说话。视界给他指了路,但那是金手指的输出,不是一份能拿给投资人看的东西。 “这些是我能做的事。”陆明洲说。 “条件是什么?” “月薪一万五,够我还房贷的。加10%股权。” 韩路一靠在椅背上。视界里陆明洲的底线清清楚楚,5%。 “10%太高了。5%。” 陆明洲看著他。 “月薪一万五可以。但股权上,5%对应现在估值二十五到四十万,总包不低了。你刚才说的三个问题都是实打实的活,做好了后续融资轮才有期权增发的空间。5%是起点,不是终点。” 陆明洲笑了。“你不像是张浩然说的那种纯技术人。” “被逼的。” “5%加一个条件。”陆明洲说。“一年內源码科技完成不低於五千万估值的融资,期权池追加2%给我。做不到就没有。” “行。”韩路一说。“我让律师擬协议。” 两人又握了握手,陆明洲站起来扫码买单。 陆明洲出门后,韩路一给苏念念打了个电话。 “今天见了张浩然介绍的那个人。陆明洲,做金融的。” “怎么样?” 韩路一把事情经过简短的说了一遍。 “等等,他要10%?” “我谈到了5%,如果六个月能做到估值五千万的融资,再加2%。” 电话那头安静了一会。 “你怎么谈的?他开10%你直接砍一半,怎么跟菜市场买菜似的?” “跟菜市场买菜也没什么区別啊。没有人一上来就出底价的。”韩路一说。 “5%加对赌……你觉得这人靠谱吗?” “眼光不错,也有决断。” 苏念念沉默了一会儿。“这个……確实是我没想到的。” “协议让顾律师擬。我们再约个时间跟他见一面,你来看一下。” “行。”苏念念说。“你是老板,你说了算。” 掛了电话。正去地铁站的路上,又接到了周彦的电话。 “韩总,审计报告出了。青岳云那边我帮你约了,开发者生態部的梁宇,梁总监。下周二下午两点。” 韩路一发了条消息给苏念念。 苏念念秒回:“加油加油加油!!!” 第三十九章 犹豫就会败北 青岳云海城总部。 韩路一和苏念念提前十分钟到了前台。苏念念穿了条灰蓝色的连衣裙,头髮扎得比平时高一些。韩路一穿了件白色polo衫,搭牛仔裤。 前台打了个电话上去,不到两分钟一个年轻姑娘从电梯里出来,胸牌写著“开发者生態部”:“韩总、苏总?梁总监在二十三楼等你们,我带你们上去。” 到了二十三楼的会议室,一整面玻璃墙,里面是一张四人桌,桌上放了两瓶矿泉水。看到两人过来,梁宇已经站了起来,他三十五六岁,短髮,穿著藏蓝色衬衫。 “久仰久仰。”梁宇握手的力道不大,但速度很快,“周彦跟我提过好几次,终於见到真人了。” “梁总客气了。” “別叫梁总,叫我梁宇就行。两位要喝咖啡吗?我让人送两杯过来。” 苏念念笑了笑:“那来两杯拿铁吧,谢谢。” 梁宇翻开一叠列印文件,bugkiller的產品介绍,上面手写了一些笔记和標註。 “先说说我们这边。”梁宇说。“青岳云开发者平台去年上了工具市场,代码审查赛道一直在找人,我们之前聊过两家,都不太行,bugkiller我们內部评估过,直播回放我也看了。” “结论呢?” “你们的影响评估是我见过最好的。”梁宇语速不快,“检测率也高,我个人非常喜欢你们的工具。” 苏念念翻开平板,把审计报告和白皮书的摘要页推过去。 “这是中盾的数据安全审计报告,以及我们的数据安全白皮书。” 梁宇翻到审计结论那页,读了一会。 “端到端加密,处理即刪,零人工接触。”他抬头,“这个很硬啊。” 韩路一打开视界。 【梁宇|36岁|青岳云·开发者生態部商务拓展(bd)总监】 【情绪:热情(隱藏:急迫)】 【核心kpi:q3开发者工具生態完成率41%|內部压力:季度考核倒计时不到七周|bugkiller內部评级:优先接入|剩余障碍:品牌知名度偏低(直播后已上调)、企业资质待验证(审计报告提交后更新中)】 梁宇比他表现出来的急得多。 关了视界。精力掉了7点。 “合作模式你们想怎么谈?”苏念念问。 梁宇把列印文件翻到第二页推过来,合作条款一共两页半。 “我直接说方案,saas掛靠,產品跑在你们自己的伺服器上,青岳这边提供入口、计费和用户管理。技术对接有標准sdk,適配两到三周。分成80-20,你们拿大头。” 他顿了一下。 “在这个基础上,我们希望做深度合作。作为交换,我们给保底月收入二十万,外加首年推广资源包。首页banner位、开发者邮件推送、技术沙龙联办,折算市场价一百到一百五十万。” “深度合作的定义是……”韩路一拿起文件,第四条是深度合作的条款。 “bugkiller在ai代码审查赛道上只入驻青岳云,不入驻其他云平台工具市场,期限三年,到期我们优先续约。” 韩路一和苏念念对视了一眼,都没说话。 “理解你们需要考虑。但坦白讲,代码审查这个赛道不新了,我们主要还是看中你们的ai属性,这种条件可不是谁都能拿到的。” 【独家为上级硬性指示(vp审批)|开发者生態部q3完成率41%,考核倒计时不足七周|撤迴风险:若bugkiller同期接触竞对云,青岳將改变態度】 “梁总。”韩路一把文件合上,“方案我们带回去研究一下。保底和推广资源都很有诚意,但独家协议涉及公司战略,我得跟合伙人和律师过一遍。” “理解。”梁宇站起来,“不过这份方案是我在內部爭取了一阵的,窗口不会太长,你们儘快做决定。” “明白了。” “加个微信,决定了隨时联繫我。” 梁宇把他们送到电梯口。 电梯门合上,苏念念摁了一楼。 苏念念盯著楼层数字往下跳,轻轻的出了一口气:“条件比我预估的好。月保底二十万加推广资源包,三年独家,放在一个月前,我可能会犹豫。” “不要犹豫,犹豫就会败北。” “韩路一你討厌啊。”她被逗笑了。 过了一会,她又说:“路一,刚才梁宇说“不止你们一家”的时候,我感觉你的笑没憋住。” “有吗?” “有。” 电梯到了一楼,两个人没走出写字楼,苏念念在叫车。八月的海城,快四十度了,热气从四面八方漫过来,像在蒸桑拿。 “他们比我们预想的还急。”韩路一说,“梁宇准备得太充分了。那条款不是临时擬的。他內部走完审批流程才来见我们。” “那我们的节奏呢?比原计划快还是慢?” “快!原计划是拿到意向去找天枢,现在青岳直接给了独家条款。这比意向书好用。” “上车吧。” 回到502。 陆明洲在韩路一的书桌前坐著,桌上是他自带的联想小红点,旁边放了一瓶矿泉水和一支钢笔。他加入源码科技一个多星期了,502的餐桌已经快变成他的工位,韩路一和苏念念进门的时候他正在改財务模型,头都没抬。 “青岳谈完了。” 韩路一把梁宇的条款文件丟在桌上。 陆明洲快速扫了一眼:“独家?” “保底月二十万,推广资源折算一百到一百五十万,排他三年。” “分成多少?” “20%。” 陆明洲拿起文件翻了两页,速度比梁宇翻审计报告还快,看完他抬起头:“保底二十万在行业里偏低,头部工具年保底每年三百万起。推广资源用的是自家標牌价,水分至少三成,实际价值七十到一百万。” 苏念念坐到另一把椅子上。 陆明洲把文件放下:“独家不签,这个我们之前討论过了,问题是这份offer怎么用。” 韩路一靠在门框上,说道:“比我们预想的还好用。独家不是总监的提案,至少是vp压下来的硬指標,整个开发者生態部q3都在赶进度,考核指標没到,他比我们急。” “你怎么知道是vp的意思?” “他没有决定权,加上考核压力,真有底气的人不会强调窗口期。” “如果独家是上面的硬指標……”他推了推眼镜,语速快了一档,“这张牌比表面值钱得多。你手上有一张青岳给的独家offer,不管你想不想接,天枢和崑崙只知道有人在抢。” 陆明洲抿了口矿泉水,说:“你知道谈崩了就什么都没有了吧。青岳不签独家,就没有流量推广,天枢崑崙都还没影呢。” “我知道,我有把握。” “行,”陆明洲把矿泉水放下,“我本来就是来赌的。” 苏念念打开平板,说:“天枢那边呢?” 韩路一想了想,说道:“bugkiller付费客户里有四十多个团队部署在天枢云上。好几个天枢的客户反馈过,问能不能做原生集成。” “客户需求!”苏念念的眼睛睁大,“最好的敲门砖。” “我整理一份客户需求匯总。”韩路一说,“不用太正式,就是真实的用户反馈截图。拿这个去见天枢,我们不是去推销的,是去帮客户解决问题的。” 陆明洲重新打开笔记本,建了一个新表。 “梁宇那边先別回復,既不答应也不拒绝,能拖多久拖多久。天枢那边一有进展就告诉我,各家的报价方案都发我过一遍。” 苏念念已经在打字了:“天枢那边谁有路子?” 韩路一说:“周彦不能问了。他帮忙约了青岳,跟梁宇有联繫。我们同时找天枢的事不能让青岳知道。” 苏念念说:“我之前大厂的前同事有几个跳去了天枢,我去问问。你翻一下客户那边,四十多个团队在天枢上,总有人认识內部的人。” 韩路一打开bugkiller后台看了一眼工单记录:“有好几个cto反馈过原生集成的需求,先从最积极的那几个聊起。” 陆明洲也抬起头:“天枢战投部我有人,之前帮一个saas项目融资的时候对接过。我问问。” “多线推,看哪条先通。” 韩路一打开电脑,开始整理客户需求。 三个人各忙各的,房间里安静下来,只剩键盘敲击声和空调的风声。 快到六点,陆明洲合上笔记本:“我先走了,回去吃饭。” 韩路一抬手示意,陆明洲收拾东西出门,502又只剩下两个人了。 韩路一问:“吃什么?” “隨便。” 韩路一点了两份外卖,黄燜鸡和水煮牛肉,两碗米饭。他把水煮牛肉推到苏念念那边,苏念念拆开盒子,辣油味填满了房间。 吃饭的时候两人没聊工作。苏念念拿出手机来,打开了一个李子柒的视频下饭,韩路一瞄了两眼,快速把饭扒完又坐回了屏幕前。 八月的六点,天还亮得刺眼。 微信响了一声,是跨境达的李总发来的语音。跨境达是他们的第一个付费用户。 “韩总,又有人来挖我了,这次更离谱,codesafe不要钱,还送三个月鼎盛云代金券。 “你放心,我不走。咱们的產品好太多了。但说句实话,我们行业群里好几个人在聊这事了,估计有几家比我定力差的。” 韩路一回了个“谢谢”,切到bugkiller后台。 通知栏掛著一条红色提醒。 【退订通知】 【锐思数据· pro年付→已取消】 第四十章 都在射程內 第二天一大早,韩路一接到了苏念念的信息。 “我之前那个在天枢云的同事,昨天晚上回我了,他上个月离职,自己创业去了,不太方便引荐。我再在朋友圈问问。” 死胡同。 韩路一又打开公司邮箱看了看官网合作通道的提交自动回復。到现在还没人联繫。 在天枢云上部署的付费团队里,反馈过原生集成需求的有好几个。其中一个cto最积极,他们是在临安做企业协同的创业公司,上个月反馈在天枢集成不通畅,特意在工单里说了:“建议优先適配天枢原生,我们可以配合內测。” 韩路一给他打了个电话。 “高总,我是源码科技的韩路一。” “韩总!真没想到,找我有事?”对方声音很大,背景吵吵嚷嚷。 “之前你们反应的天枢云集成问题,我们的团队在做了。这边想问一下,你在天枢认不认识开发生態或者bd的人?” “生態不认识。”高磊想了想,“我跟天枢技术那边比较熟,云原生架构组的组长,我们做容器化迁移的时候打过不少交道。要不我帮你问问他,看能不能帮忙牵个线?” “太好了,麻烦高总。” “哈哈,我就是问问,不保证啊。”高磊大笑几声,“技术和商务经常各干各的,你懂的。” 掛了电话,韩路一又翻起下一张工单来。 “战投那边回话了。” 是陆明洲发来的消息。 (请记住 101 看书网超顺畅,????????????.??????任你读 网站,观看最快的章节更新) 韩路一赶紧打电话过去。 “问了我几个数据。”陆明洲说,“订阅数,增长率,月收入。” “这是好消息还是坏消息?” “是个好信號。”陆明洲说,“问数据,说明他有动作。如果只是客气,最多说“我帮你转一下”,就没下文了。我一会把数据整理好发过去。” “行。” bugkiller付费客户群里冒出一条消息。 “问一下,codesafe企业版真的免费了?我们行业群好几个人在说。” 韩路一看到了,想回復,又忍住了。 苏念念在群里发了一句:“竞品动態不方便在群里聊哈,有疑问请隨时私聊我~”然后开了三个私聊窗口。 韩路一又查看了一下管理后台。 【退订通知】 【锐辰软体· pro月付→已取消】 【退订通知】 【鹏城云翼· pro月付→已取消】 嘆了口气,他切回编辑器继续写起了代码。 傍晚六点,陆明洲发来一条微信。 “通了。” 韩路一拿起手机。 “战投那边把材料转到了天枢开发者生態部,生態部商务负责人姓周,周明远,他回復了——” 陆明洲转发了一张截图。 “周五有空,韩总方便来一趟吗?” 韩路一看了一下日历。今天周二。 三天。 他把这事发给苏念念,马上电话就响了。 “怎么联繫上的?” “陆明洲那边的关係。天枢战投转到了生態部。” “太好了!太好了太好了!”苏念念的声音像鬆了一口气,“我去准备天枢的差异化方案,他们跟青岳不一样,天枢云用户画像偏大中型企业。” 韩路一说:“v1.3版本快写完了,应该比以前快不少,我这今天晚上就把它上线,我们拿新版本的数据去见天枢。” 截止到周四晚上,一共流失了五个客户。bugkiller的日活曲线平稳上升,付费曲线转向下滑,两条线像剪刀一样慢慢张开。 韩路一出门取外卖的时候,看到门口放了一个牛皮纸文件袋。 上面贴了一张便签,是清秀的楷书:“品牌初稿,你先看看,不满意我再改。” 他把文件袋和外卖一起拿进屋,拆开。 一共三套完整方案。每一套都有配色板、字体选择、icon变体、简版ui示意图。 第二套的瓢虫造型最好看,几何化的七星瓢虫,翅膀微微张开,线条乾净利落。底下附了標语:“because every line matters(每一行代码,都值得被认真对待)”。 韩路一坐在餐桌上,翻看了半天。 给林晚晴发了条微信:“第二套完美,可以把资源发过来吗?” 林晚晴回了一个ok的手势。 收到后韩路一把资源包发在了【源码科技高管群】里:“品牌形象升级啦。” 【陆明洲 frank】:“很有辨识度。” 【苏苏念念】:“太好看了吧!这套设计至少值十万啊!” 韩路一又跑去私聊林晚晴:“记得把帐单发给我。” 又是一个ok。 …… 周五早上八点,韩路一在整理天枢见面的材料。 苏念念带了早餐来502和韩路一一起吃,两杯豆浆,一盒包子,两根油条。 进门坐下,刚把吃的在餐桌上摆开,手机响了。 来电显示:青岳-梁宇。 “韩总。” 梁宇的声音既不热情,也不愤怒。 “听说你们在跟天枢接触?” 韩路一也没打算隱瞒。 “我想多评估一下。” 电话那头安静了一会儿。 “那我们的独家方案先搁置一下吧。”梁宇说,“等你们想清楚了再聊。” 没等韩路一说话,对方已经掛了。 苏念念坐在餐桌对面,手里的肉包才吃了一半,赶紧嚼了几口才开口:“是青岳?怎么了?” “没事,都在射程內。” “你別逞强啊!他们反悔了?” “也不是反悔,想嚇我一下。” 苏念念换了个方向:“天枢那边的消息怎么传出去的?” “云服务圈子就这么大,天枢评估我们,总会有人注意到的。” 韩路一想起在青岳会议室里视界的提示:【撤迴风险:若同期接触竞对云,青岳將改变態度】。 都在射程內。 苏念念看著手里的包子。 “那现在是最坏的情况了?青岳反悔了,天枢还没谈上,连订阅数也在掉。” “不是最坏的,最坏的是签了青岳的独家,成长上限绑死在一家云上。”韩路一把天枢的方案文件推到苏念念面前,“都在射程內,相信我!” 苏念念看向他。 “青岳会回来的。”韩路一说,“先见天枢。” 窗外传来洒水车的声音。八月底的海城,早晨八点已经三十度了。 两根油条还在纸袋里,谁都没动。 距离和天枢的商务负责人见面,还有两个小时。 第四十一章 寸步不让 韩路一和苏念念从网约车上下来,比约定的时间还早十分钟。 苏念念走进大楼的时候抬头看了一眼招牌,“你有没有觉得,他们招牌比青岳低调?” “青岳是做c端起家的,招牌要醒目。天枢主要做企业客户,越低调越显得稳重。”韩路一猜测,苏念念点了点头。 电梯到十八楼,两人向前台报了名字。等了两分钟,一个穿浅灰色西装的男人快步走了出来。 “韩总,苏总?我是周明远,快请进。“ “幸会。“韩路一和周明远握了握手,三人一起走向一个会议室。 周明远看上去四十出头,头髮有些稀疏,语速比梁宇慢一半。 “战投那边把材料转过来,我看了。“他开门见山,“四十七个付费团队部署在我们这,这是个很好的基础。“ “我们天枢云上的付费客户,好几家都提过原生集成的需求。“苏念念把平板推过去,“整理了一份反馈匯总,您看看。“ 周明远翻了两页,合上了。 “数据源是客户自己报的?“ “我们做的抽样调研。“ “嗯。“他把平板放回桌上。 韩路一打开视界。 【周明远|42岁|天枢云·开发者生態部商务总监】 【情绪:谨慎(隱藏:兴趣)|核心关注点:客户留存率+生態完整性|內部评估:bugkiller对天枢云用户有实际粘性价值|谈判风格:务实,重视数据】 “苏总,可以把后台打开,让周总看一下实时数据。“ 苏念念看了韩路一一眼,打开bugkiller后台,平台筛选切到天枢云,把平板递过去。 周明远接过平板,边看边向下滑动,在延迟监控那栏停了一会。 “这个管道延迟,大团队能到多少?“ “八分钟。“苏念念说,“小团队三到四分钟,中型五到六分钟。非原生接入多了一层中转,每次构建都得等。大团队一天跑几十次,影响很可观。“ 周明远转向韩路一:“韩总,青岳那边,你们聊到什么程度了?“ “青岳给了一个深度合作的方案,我们在评估。“ “青岳的风格我了解,上来就排他,保底换绑定。“他把平板还回来,“我们的思路不一样,我们要做最好的客户体验,所以我更看重bugkiller能给天枢云用户带来什么。“ “理解。“韩路一说,“我们准备了一份合作方案。“ 更新不易,记得分享101看书网 苏念念把平板切到陆明洲做的方案文档,递迴去。 周明远滑到天枢专属適配那一节。 “这个缓存层是新加的?“ “这周上线的。我们在缓存层针对天枢云的api做了优化,大团队延迟能从八分钟压到四五分钟。但要真正解决,还是得靠原生集成。“ “方案发我邮箱一份,我带回去走程序,我老板就能拍板,不用层层审批。“周明远把平板递迴来。“下周给你答覆。“ “期待。“ 电梯里,苏念念呼出一口气。 “你刚才为什么突然让我开后台?“ “他不信咱们的报告。“韩路一看著楼层数字往下跳,“是个务实派。“ “你觉得能成吗?“ “不是和你说了吗?都在射程內。“ 出了天枢大楼,韩路一看了眼街对面。 “走吧,吃完再回去。跟明洲说一声,让他自己点外卖。“ 苏念念发了条微信给陆明洲,两人拐进旁边一家麵馆。 “你说周明远会不会今天就跟他老板匯报?“苏念念端起碗吹了吹。 “吃饭不聊工作啦。“ 苏念念笑了一下,讲起昨天在小黄书上看到一个產品经理转行做烘焙的帖子,阅读量十万加,底下全是“我也想辞职“。韩路一说你现在不就是辞职状態。苏念念说我这叫创业,不一样。 面吃到一半,韩路一的手机响了。 是一个陌生號码。 “请问是源码科技的韩总吗?我是崑崙云开发者生態部的陈凯。“ 苏念念的筷子停在半空。 “陈总,你好你好。“ “是这样,我们注意到贵司最近在跟青岳云和天枢云接触,崑崙云在ai开发者工具这块也在布局,想问问韩总有没有兴趣聊聊?“ “有兴趣,什么时间?“ “下周三下午方便吗?我们周四在海城有个活动,我提前一天过来。“ “好,我加你微信,具体时间咱们微信上对。就是这个电话对吗?“ 韩路一掛了电话,转头看苏念念,明显憋著笑。 苏念念低头吃麵,头都不抬:“吃饭不聊工作哦。“ “所以你们不仅见了天枢,崑崙还找上门来了?“ 回到502已经快两点了,苏念念把天枢和崑崙的事一口气说完,陆明洲惊讶的张了张嘴。 “两家都不绑独家?“ “天枢明確不绑。崑崙还没聊条件,但他们主动找来的,姿態不会太硬。“ “那就差青岳了。“ “青岳会回来的。“ …… 八月底的阳光透过梧桐树的枝叶在青砖路面上投下一片片碎影,沿街的老房子底楼全改了商铺,奶茶店和杂货铺挤在一起,空气里混著说不清的味道。松风茶社藏在一条弄堂尽头,门脸只有半间宽,门口掛著褪色的木牌。地方是陈凯让人订的。 韩路一一个人来赴约。 陈凯大概四十出头,头髮灰白,梳了个大背头,穿一身灰色高级西装,看起来像金融人多过像网际网路。 他给两个人都倒上普洱,然后把茶壶放到一边。 “韩总,我就直说了,鼎盛的codesafe气势太凶,崑崙不能什么都没有,我这次来是带著诚意的。“ 韩路一打开视界。 【陈凯|41岁|崑崙云·开发者生態部高级商务经理】 【情绪:坦诚(隱藏:急迫)|核心动机:高层施压,一个月內必须落地ai工具合作|谈判底线:分成可让到92/8】 陈凯从公文包里抽出一份文件推过来。 “这是我们的方案。非排他,收入分成八五一五,月保底十五万,推广资源另算。“ 韩路一端起茶杯喝了一口。 流量上来,分成可观,保底就没用了。保底不值得爭,分成才是长期的钱。 “保底可以,分成我想聊聊。“ 陈凯没预料到他不谈保底:“八五一五是我们標准条款。“ “標准条款是给標准產品的。“韩路一说,“陈总,我要92%。“ 陈凯拇指在杯沿上转了一圈。 “九零一零,我能拍板。“ “92%。“韩路一说,“这是我的出价,不会变了。“ 陈凯拍了一下大腿。 “韩总,寸步不让啊,这个超过我权限了,得请示一下领导。“他说著站了起来,拿著手机走出门外。 韩路一静静的坐著。 几分钟后,陈凯回来了:“韩总,好消息,领导同意了。等我回去走流程,把新方案发你。“ “合作愉快。“韩路一站起来说。 源码科技的高管们围在502的一张白板前。 天枢:非排他/二十万保底/ 85% 崑崙:非排他/十五万保底/ 92% 青岳:- 陆明洲出了一口气:“就差青岳了。“ 韩路一看著白板上那个空白:“青岳会回来的。“ 手机响了。 来电显示:梁宇。 502安静了下来,苏念念看到屏幕,坐直了身子。 韩路一接起来。 “韩总,上次的事……处理得有点急。“