屏幕上的代码像一列等待检阅的士兵。
周律师的录音笔亮着红灯。李工拉过另一把椅子坐下,打开自己的笔记本电脑。隔间里只剩下键盘敲击声和轻微的呼吸声。
“我们先从代码所有权开始。”周律师翻开笔记本。“陈先生,请完整描述‘瞬瞳’算法的开发过程。时间,地点,使用的设备。”
陈默清了清嗓子。
他讲得很慢,每个日期都精确到日。在家里的旧笔记本上起头,在咖啡馆里完善核心逻辑,在出租屋的深夜完成测试。设备序列号,软件授权号,云端存储的时间戳。
周律师低头记录,笔尖沙沙响。
李工忽然开口。“能打开版本控制记录吗?”
陈默切换窗口。git提交记录一列列展开,每次提交都有详细的注释。时间线清晰,没有大段的空白。李工凑近屏幕,眼镜片反着光。
“这一块。”他手指点向一段代码。“为什么用这种卷积结构?”
“为了降低计算量。”陈默说。“老旧小区的设备性能有限,必须做轻量化处理。”
“有参考论文吗?”
“有。”陈默打开另一个文件夹。“这三篇,思路相近但实现不同。我的代码是重新实现的,你可以比对。”
李工仔细看了几分钟,点点头。
周律师继续问。“开发过程中,是否使用过原公司‘灵瞳’项目的任何代码、配置文件或训练数据?”
“没有。”陈默说得很肯定。“架构完全不同。训练数据是我自己合成的,用了公开数据集和模拟生成。”
“如何证明?”
陈默调出数据生成脚本。每一行代码都有注释,生成逻辑写在最前面。他又打开训练日志,损失曲线平滑下降,没有异常的跳跃。
李工拖动滚动条,看了很久。
隔间里很安静。窗外的公园传来孩子的笑声,远远的,像隔着一层玻璃。陈默手心又出了汗,他在裤腿上悄悄擦了擦。
“算法效果对比呢?”周律师问。
陈默打开演示程序。屏幕分成两半,左边是“灵瞳”的公开演示视频,右边是他的算法实时运行。同一个测试场景,右边的识别框更稳定,响应快了零点三秒。
李工盯着屏幕,手指在桌面上轻轻敲打。
“内存占用多少?”
“比‘灵瞳’少百分之四十。”陈默调出监控数据。“峰值占用在这里,二百兆左右。普通边缘设备能跑。”
“准确率数据?”
“在测试集上百分之九十六点七。”陈默打开评估报告。“这是详细数据,每类目标的识别率都有。”
李工接过鼠标,自己翻看报告。
周律师关掉录音笔,换了一支新的。“陈先生,我需要你签署一份声明。”他从公文包里抽出几张纸。“声明内容是你保证代码的原创性和数据合法性。如果后续出现纠纷,这份声明将作为重要证据。”
陈默接过文件。
纸张很厚,印刷字体密密麻麻。他快速浏览关键条款,没有陷阱,都是标准表述。他拿起笔,在签名处写下名字。
笔尖压得很重,墨水微微晕开。
李工终于抬起头。“代码我看完了。”
周律师看向他。“结论?”
“干净。”李工说。“结构清晰,注释完整,没有可疑的引用。数据生成方法合理,训练过程也规范。”他顿了顿。“技术层面,没有问题。”
陈默肩膀松了一下。
他自己都没察觉原来绷得这么紧。呼吸顺畅了些,窗外的声音忽然清晰起来,鸟叫,风声,遥远的汽车鸣笛。
周律师合上笔记本。“审计通过。我会出具正式的法律意见书,明天发给沈小姐。”他站起身,伸出手。“陈先生,合作愉快。”
陈默握手,这次手心是干的。
两人收拾东西离开。脚步声消失在走廊尽头,电梯下行提示音叮了一声。陈默坐回椅子,盯着屏幕看了很久。
代码还在那里,一行行,沉默而稳固。
他关掉所有窗口,桌面恢复成默认的蓝天草地。然后他打开邮箱,给沈清澜发了一句话:“审计通过。”
发送。
三秒后,回复来了:“好。”
只有一个字。陈默盯着那个字,嘴角慢慢扬起。他靠在椅背上,闭上眼睛。阳光照在眼皮上,暖烘烘的,带着午后的倦意。
手机震动了一下。
沈清澜又发来一条:“公司注册材料准备好了吗?”
陈默睁开眼。“还在填。”
“今天搞定。”沈清澜说。“我发了模板给你,照着填。重点看股权结构那页,别填错。”
“明白。”
陈默打开她发来的压缩包。里面是一整套注册文件,公司章程,股东协议,注册资本认缴书。每份文件都有批注,标红了需要他填写的地方。
他泡了杯速溶咖啡。
热水冲下去,粉末融化,升起廉价的香气。他吹了吹热气,小口喝着。甜味很假,但够提神。
他开始填表。
公司名称:默视科技有限公司。注册资本:一百万。经营范围:人工智能技术开发、技术服务、技术转让。他写得很慢,每个字都工整。
股权结构那页,他反复核对了三遍。
陈默,百分之六十。沈清澜,百分之四十。出资方式,他写技术入股,她写货币出资。签字处空着,等打印出来再签。
填到下午三点。
他检查了一遍所有文件,没有遗漏。然后登录政务服务网站,找到企业开办入口。上传身份证照片,扫描件,手持身份证拍照。
系统自动识别信息,填充表格。
他核对一遍,点击提交。页面转圈,进度条缓慢前进。百分之十,百分之三十,百分之七十。他盯着那个转动的圆圈,手指无意识地敲着桌面。
提交成功。
页面跳转到下一步,需要实名认证。他打开手机app,扫二维码,对着摄像头眨眼。屏幕里自己的脸有些憔悴,眼窝深陷。
认证通过。
接下来是等待审核。系统显示预计一到三个工作日。他截了屏,发给沈清澜。“提交了。”
“嗯。”沈清澜回复。“办公场地看了吗?”
“还没。”
“现在去。”沈清澜说。“地址我发你。找个靠谱的共享办公,要有独立隔间,网络稳定。价格别超预算。”
陈默收起电脑,背上背包。
他锁好隔间门,下楼走出大楼。沈清澜发来的地址在另一个创业园区,地铁三站路。他跟着导航走,穿过两条街。
园区门口立着巨大的金属雕塑。
造型是扭曲的芯片和齿轮,漆成银色,在阳光下刺眼。门卫室里坐着个打盹的老头,陈默登记了名字,走进园区。
楼都是新的,玻璃幕墙反射着天空。
他找到三号楼,乘电梯上五层。电梯门开,迎面是一面绿植墙,苔藓拼成公司logo。前台女孩正在接电话,用手势示意他稍等。
陈默站在大厅里打量。
开放办公区很大,摆满长桌。零零散散坐着些年轻人,戴耳机对着屏幕。有人在小声讨论,白板上写满公式。空气里有咖啡味,还有新装修的淡淡气味。
女孩挂断电话,走过来。
“先生您好,看办公位吗?”
“嗯。”陈默说。“想看看独立隔间。”
女孩带他往里走。穿过公共区,里面是一排玻璃隔断的小房间。大小不一,有的空着,有的堆着纸箱。女孩打开其中一间的门。
“这间刚空出来。”她说。“十二平米,有基础办公家具。网络是专线,上下行对等。”
陈默走进去。
房间方正,一张桌子两把椅子,一个文件柜。窗户朝南,外面能看到园区的中央草坪。阳光很好,照得地板发亮。
“多少钱?”
“三千五一个月。”女孩说。“押二付一,包含物业和网络。水电另算,但不多。”
陈默在心里算账。
沈清澜给的第一期资金五十万,注册公司要用掉一部分,设备采购也要钱。三千五在预算内,但不算便宜。
“能试半天吗?”他问。
“可以。”女孩爽快地说。“我带您去办临时卡,网线插上就能用。”
临时卡是一张蓝色门禁卡。陈默刷开隔间门,接上网线测速。下载速度跑满,延迟很低。他打开远程桌面,连接家里的开发环境。
流畅,无卡顿。
他关了电脑,决定就这里。女孩拿来合同,他仔细看了条款,没有隐藏费用。签了字,付了押金和首月租金。
钥匙到手,沉甸甸的一串。
他回到隔间,把背包放好。桌子擦了一遍,椅子调了高度。然后他坐下,打开电脑,给沈清澜发消息:“定了,三号楼五层七号。”
“照片。”
陈默拍了几张发过去。房间,窗外,网络测速截图。沈清澜很快回复:“可以。明天律师会把注册文件送过去,你记得收。”
“好。”
“还有件事。”沈清澜说。“算法脱敏的方案,晚上我们过一遍。九点,视频会议。”
“需要准备什么?”
“你的代码库访问权限。”沈清澜说。“我这边有个安全专家,会指导你做代码混淆和架构调整。目标是在不损失性能的前提下,让算法看起来和原版完全不同。”
陈默愣了愣。“这么复杂?”
“必须做。”沈清澜语气严肃。“赵志刚不是傻子。他如果怀疑你,第一件事就是找专家比对代码。我们要在法律和技术层面都切断关联。”
“明白了。”
“晚上见。”
陈默看了眼时间,下午四点半。离会议还有四个多小时。他决定先回之前的隔间收拾东西。
地铁上人不多。
他靠着车门,看窗外隧道墙壁飞速后退。灯带连成线,明灭交替。脑子里过着晚上要讨论的问题,代码混淆,架构调整,性能保持。
回到共享办公区,七号隔间还锁着。
他打开门,里面一切如旧。显示器待机灯亮着,键盘上落了一层薄灰。他拔掉线缆,收拾好所有私人物品。
电脑,充电器,水杯,那支签过意向书的笔。
全部装进背包。他最后看了一眼这个十平米的小空间,关灯,锁门。钥匙交还给前台,访客卡归还。
走出大楼时,天开始暗了。
云层压得很低,泛着橘红色的边。风大了些,吹得树叶哗哗响。他走到便利店,买了份便当,加热后站在门口吃完。
米饭硬,菜油腻。
他吃完把饭盒扔进垃圾桶,擦了擦嘴。然后慢慢走回新租的隔间,刷卡上楼。走廊里亮着灯,几家创业公司还在加班,隔着玻璃能看到晃动的人影。
七号隔间很安静。
他打开灯,拉上窗帘。然后打开电脑,连上网络。时间刚过七点,离会议还有两小时。他先整理代码库,把核心算法部分单独标记出来。
八点半,他泡了杯茶。
茶叶是之前剩下的,味道很淡。他小口喝着,眼睛盯着屏幕。系统界面忽然在眼前闪了一下,跳出一行提示:“代码混淆建议方案已生成。”
陈默怔了怔。
他以为系统只会推演未来,没想到还能处理这种具体的技术问题。界面展开,列出三种混淆方案,每种都有详细的步骤和预期效果。
头痛没有出现,只有轻微的眩晕。
他选了第一种方案,方案自动展开成具体操作步骤。重命名变量,插入无效代码段,调整函数调用顺序。每一步都标注了风险点和注意事项。
他记下关键点,系统界面淡去。
九点整,视频会议邀请弹出来。他点击接受,沈清澜的脸出现在屏幕里。她在家,穿着宽松的灰色卫衣,头发随意扎着。
背景是一面书墙,摆满了技术书籍。
她旁边还坐着一个人,中年男人,穿格子衬衫,戴黑框眼镜。沈清澜简单介绍:“这位是刘工,安全领域的专家。”
刘工点点头,没说话。
“开始吧。”沈清澜说。“陈默,你先介绍算法结构。”
陈默共享屏幕,打开架构图。他从数据输入层讲起,讲到特征提取,核心推理,结果输出。每层的作用,模块间的数据流。
刘工听得很认真,时不时打断提问。
“这个特征金字塔,为什么用三层?”
“为了兼顾不同尺度的目标。”陈默说。“小区场景里,人和车的尺寸差异大,需要多尺度特征。”
“能改成四层吗?”
“可以,但计算量会增加百分之十五。”陈默调出模拟数据。“这是对比结果,准确率提升不到百分之一,不划算。”
刘工点点头,在笔记本上记录。
沈清澜插话。“混淆的重点在核心推理模块。这个模块最独特,也最容易比对。我们要把它打散,重组。”
“怎么打散?”陈默问。
刘工接过话头。“我看了你的代码。推理模块有十二个主要函数。我们可以把这些函数拆成更小的子函数,然后重新排列调用顺序。”
“性能影响呢?”
“理论上没有。”刘工推了推眼镜。“只是增加了函数调用开销,但编译器优化后会抵消大部分。关键是要保持输入输出的一致性。”
陈默调出函数调用图。
十二个函数,互相调用关系复杂。他思考了几分钟,提出一个拆分方案。刘工看了,摇头。
“这样拆不够。”他说。“要把嵌套调用拉平,变成线性链。虽然逻辑上绕了弯,但结构完全不同。”
两人讨论起来。
沈清澜安静听着,偶尔插一句关键问题。屏幕上的架构图被反复修改,函数块移动,连线重画。陈默手边草稿纸上写满了笔记。
十点半,方案初步确定。
核心推理模块被拆成二十四个小函数,调用顺序完全重排。中间插入三个无效函数,用来干扰逆向分析。输入输出接口保持原样。
“测试一遍。”沈清澜说。
陈默跑测试脚本。新代码编译通过,测试数据灌进去。结果和原版完全一致,性能波动在百分之二以内。
“可以。”刘工说。“明天我帮你写自动化混淆脚本,以后每次迭代都能自动处理。”
“谢谢。”陈默说。
“不客气。”刘工笑了笑。“沈小姐付了钱的。”说完便退出了会议。
屏幕里只剩下沈清澜。她端起杯子喝了口水,看起来有些疲惫。卫衣领口歪了,露出一截锁骨。
“还有件事。”她说。“公司注册完成后,要开对公账户。我预约了下周三,你带上所有材料,我陪你去银行。”
“好。”陈默说。
“李建国的详细资料我发你了。”沈清澜揉了揉眉心。“他喜欢听具体的数字,讨厌空谈。你准备方案时,多算几笔账。成本,工期,预期效果。”
“明白。”
两人沉默了几秒。视频窗口里,沈清澜身后的书墙在暖黄灯光下显得厚重。陈默忽然想起她那本小众的外文书,关于认知科学和算法。
但他没问。
“今天先这样。”沈清澜说。“你早点休息。明天还要跑工商局,如果审核快的话。”
“嗯。”
“对了。”沈清澜正要关视频,又停住。“新办公室,感觉怎么样?”
陈默环视四周。空荡的房间,崭新的家具,窗外漆黑的夜色。他点点头。
“挺好。”他说。“有地方落脚了。”
沈清澜看着他,嘴角微扬。“那就好。”然后关了视频。
屏幕暗下去,映出陈默自己的脸。他靠在椅背上,长长吐了口气。一天下来,肩膀酸,眼睛干,但心里很踏实。
他打开邮箱,下载沈清澜发来的资料。
李建国的履历很长,从技术员做到项目总监,主导过十几个智慧城市项目。附件里还有他发表的几篇文章,文风务实,不喜虚词。
陈默快速浏览,记下关键点。
喜欢用数据说话,重视投资回报率,讨厌技术名词堆砌。他打开自己的方案,开始对照修改。把“先进的算法”改成“识别准确率提升百分之十二”,把“优化体验”改成“平均响应时间缩短零点四秒”。
改到深夜十一点。
窗外彻底安静了,园区里只剩几盏路灯亮着。他保存文件,关掉电脑。背包里拿出牙刷毛巾,去公共卫生间洗漱。
镜子里的自己眼圈发青,但眼睛很亮。
他刷了牙,用冷水扑脸。然后回到隔间,从文件柜里翻出一条薄毯子。这是白天从出租屋带过来的,洗得发白。
他把两张椅子拼在一起,躺上去。
毯子盖到胸口,不够长,脚露在外面。天花板上的消防喷头是个红点,在黑暗里微微发亮。他盯着那个红点,听着自己的呼吸声。
很累,但睡不着。
脑子里还在过今天的事。审计通过,公司注册提交,办公场地租下,算法脱敏方案确定。一环扣一环,像精密的齿轮开始转动。
他翻了个身,椅子吱呀响。
窗外忽然传来细微的声响,像是猫跳过围墙。他侧耳听了一会儿,声音消失了。远处有夜班公交驶过,引擎声低沉。
他闭上眼睛,强迫自己休息。
明天还有更多事要做。工商局,银行,供应商联系,方案细化。每一件都不能出错。他在心里默数,一件,两件,三件。
数到第七件时,睡意终于涌上来。
意识模糊前,他想起沈清澜那句话。“有地方落脚了。”是的,有地方了。虽然只是十平米的玻璃隔间,虽然是共享办公,虽然是拼起来的椅子当床。
但这是起点。
真实的,可以触摸的起点。他蜷了蜷身体,毯子裹紧了些。窗外的风声渐渐远去,沉入黑暗的深处。
半夜醒来一次。
喉咙发干,他摸到水瓶喝了一口。水凉透了,顺着食道滑下去,激得他清醒了几秒。他看了眼手机,凌晨三点二十。
园区里一片漆黑,只有安全出口的绿光幽幽亮着。
他躺回去,这次很快睡着了。梦里没有代码,没有合同,只有一片刚翻过的土地,湿润,黝黑,等着种子落下。