Skip to content

第一百零五章 清场

青旅的上铺有个好处——别人看不到你在干什么。

林知行盘腿坐在床铺靠墙的那侧,背后是硌人的铁栏杆,面前摊着三样东西。一张A3纸折了三折,边角发黄,是他从灵犀带走的那张教育AI产品模块依赖关系图。一个黑色笔记本,封皮磨得起了毛边,里面记了七个月的东西。一个U盘,银色,指甲盖大小,插在借来的笔记本电脑上。

这是第三天。

前两天他没怎么动这些东西。第一天他在青旅的公共区域坐了一下午,看手机上的租房信息,越看越贵。第二天他去中关村附近转了一圈,走进两家孵化器的前台问有没有免费工位,第一家说没有,第二家说有但只给有融资计划的团队。他问融资计划是什么,前台的姑娘看了他一眼,说就是BP。

他说没有。

姑娘说那没办法。

他回来之后在青旅的公共厨房泡了一碗面,吃完洗了碗,回到上铺,把这三样东西从背包里掏出来。

现在该清场了。


模块依赖关系图他已经看过一遍了。

这张图是入职第一周开始画的,花了两周时间完成。图的中心是教育AI产品的核心推荐引擎,往外延伸出七条线,分别连着数据采集层、用户画像模块、内容标注系统、可信度评分模块、反馈回路、A/B测试框架和前端展示层。每条线上都标了接口定义、数据流向、依赖关系和已知的技术债。

他在可信度评分模块旁边画了一个圈,圈里写了三个字:我的。

那是他在灵犀做的唯一一个从零到一的模块。其他的都是在别人的基础上改——改数据清洗的逻辑、改周报的格式、改PPT的页数。只有这个模块是他自己设计的架构、自己写的代码、自己跑的验证。

现在这个模块的署名是程浩。

他把图展开,看了很久。不是在看技术细节——那些他已经记在脑子里了。他在看这张图本身的结构。

这是一个典型的依赖关系图。每个模块都有明确的输入输出,每条线都有清晰的方向。如果删掉一个模块,其他模块会受影响;如果改一条线的方向,整张图的逻辑会变。

他在灵犀学到的最重要的东西,不是怎么写代码,是怎么看这种图。

一个系统的全貌不是靠看代码看出来的,是靠看依赖关系看出来的。代码是细节,依赖关系是结构。细节可以改,结构一改就是伤筋动骨。

他在图的右下角写了一行小字:此图基于真实AI产品架构绘制,已去除所有公司信息,仅保留结构逻辑。

然后他把图拍了一张照片。


笔记本比图复杂。

他翻开第一页,上面记的是入职第一天的笔记:工号、入职流程、IT权限申请步骤。字迹很工整,是他习惯的风格——每一条都编号,每一行都对齐。

往后翻,内容开始变杂。

有技术笔记:周报的写法(沈渡教的七分钟法则)、PPT的结构(封面-问题-方案-数据-下一步)、技术文档的规范(引用论文、标注版本、附测试数据)。

有会议记录:季度规划会上沈渡推项目的过程、周睿反对的措辞、高管追问学历时沈渡的停顿。

有他自己的分析:周睿的管理漏洞——每次审批都会拖延三天,原因是他的邮件看不完;程浩的工作模式——用论文包装技术方案,核心逻辑来自别人的代码;沈渡的操作规律——每周三下午参加闭门会,会后总有新的合作意向出现。

最后几页是他画的那张关系图的草稿。他画了三版,第一版太密看不清,第二版太疏漏了关键节点,第三版才成型。

他把笔记本合上,放在膝盖上。

这些东西没有用了。他不会再回灵犀,不会再做教育AI产品,不会再写周报。但他不想扔掉。

不是因为怀旧,是因为它们是真的。

七个月的时间,浓缩在一百多页的笔记里。每一页背后都有一段真实的经历——被周睿批评数据权限的那天、在评审会上被沈渡说"你越位了"的那天、发现自己署名被删的那天。

这些经历不会消失,但它们会变。过几年再看,他可能会觉得当初的愤怒不值一提,可能会觉得当初的隐忍是对的,也可能会觉得当初应该更早离开。

但不管怎么变,这些笔记记录的是当时的他。

他把笔记本放回背包。


U盘里的东西最敏感。

他插上电脑,打开U盘的根目录,里面有三个文件夹:代码留底、沟通记录、专利截图。

代码留底是他从灵犀的代码库里拷出来的——不是全部代码,是他自己写的那部分。可信度评分模块的核心算法、数据质量评分脚本、半结构化输入的解析逻辑。这些代码他已经发过一次开源仓库,后来被沈渡要求撤下了。

沟通记录是他和沈渡、周睿、程浩的聊天截图。有沈渡说"你越位了"的那条消息,有周睿说"数据的事你先停一下"的那条消息,有程浩周报里没提他名字的那条消息。

专利截图是他查到的沈渡名下的三项AI相关专利申请。他把申请文件的首页和核心技术方案的页面都截了下来,重合的部分用红色标注了。

他盯着这三个文件夹看了一会儿。

这些东西是他的保险。如果将来有一天灵犀来找他麻烦——比如说他泄露商业秘密,或者他的开源算法侵犯了灵犀的知识产权——这些东西可以证明:算法是他写的,思路是他的,灵犀的专利是在他不知情的情况下申请的。

他不知道这一天会不会来。

但他知道,在北京这个地方,保险不能没有。

他把U盘拔下来,放进背包的内袋里。


清理完这三样东西,他打开笔记本电脑,登录了GitHub。

匿名仓库的页面加载出来。star数:2018。比昨天多了四个。

他点开仓库的README文件,开始编辑。

在现有内容的最后,他加了一个新的section,标题是"附录:真实AI产品的架构拆解"。下面附了那张模块依赖关系图的照片,以及一段注释:

这张图是我在一家AI公司工作时画的,基于一个真实的教育AI产品。图中所有公司信息、产品名称和人员信息已被去除,只保留技术架构的结构逻辑。

发布这张图的原因很简单:这个架构的思路对中小团队做AI应用可能有参考价值。核心模块的依赖关系、数据流向的设计、可信度评分的位置——这些东西不应该被锁在一家公司的服务器里。

如果你正在做类似的项目,希望这张图能帮你少走一些弯路。

他写完这段话,又看了一遍,确认没有提到灵犀、没有提到沈渡、没有提到任何人的名字。然后他点了commit。

页面刷新了两秒,更新成功。

他关掉笔记本,靠在墙上,闭了一会儿眼。

青旅的隔音很差,隔壁床铺的人在打呼噜,楼下的公共区域有人在用英语聊天,声音忽高忽低。他听着这些声音,脑子里很安静。

两个小时后他打开手机,看了一眼GitHub。

star数:2061。涨了四十三个。

他把这个数字记在脑子里,没有截屏。


手机响了。

是方小满的消息,一条接一条地弹出来。

"机票买了。下周三到北京。"

"青旅找好了,你那个六人间还能加人吗?"

"我问了前台,说床位满了。我自己又找了一家,离你那边地铁三站。"

林知行打了几个字:"青旅不让加人。我们得找个房子。"

方小满回得很快:"行。你先找。我到了先住桥洞。"

林知行看着这条消息,没有笑。

他知道方小满不是在开玩笑。方小满做事的方式是这样——先表态,再想办法。他说住桥洞,不是真的要住桥洞,是在说:我不挑,有什么住什么。

"你辞职了?"林知行问。

"辞了。"

"房子呢?"

"退了。东西打包寄回四川了。"

"你妈怎么说?"

方小满没有立刻回复。过了半分钟,发来一条语音,只有五秒。林知行点开,听到方小满的声音,比平时低了一点:

"我妈说,去吧。反正你也拦不住自己。"

语音的背景里有风声,像在户外。林知行想到方小满可能站在阳台上,或者站在某个他熟悉的地方,最后一次看那座城市的天际线。

"到了北京我接你。"林知行说。

"不用。我自己能找到。你把房子找好就行。"

"行。"

"还有一件事。"方小满打字的速度很快,"我把我爸的旧笔记本带过来了。ThinkPad,老款的,能用。你那个青旅的电脑借太久不太好。"

林知行看了一眼旁边那台借来的笔记本电脑,屏幕已经花了,左下角有一条细细的亮线。

"好。"他说。

方小满回了一个字:"嗯。"

然后没了。

林知行把手机放下,看着天花板。

方小满辞了工作,退了房子,把所有东西打包寄回四川,买了一张机票,带着他爸的旧笔记本电脑,下周到北京。

这一次,方小满和他一样,没有退路了。


他在青旅的公共区域找了一张空桌子,打开手机上的租房App。

筛选条件:四环以内、月租三千以下、能住两个人。

结果不多。大部分是隔断间,照片拍得很好看,但评论里有人说隔音差、没有窗户、房东不退押金。有几条看起来靠谱的,打电话过去问,都说已经租出去了。

他把筛选条件放宽到四环以外,结果多了一些。

他在一个叫"朝阳区管庄"的地方看到一套两居室的单间,月租两千八,照片里有一张双人床、一张桌子、一台旧电视。评论里有一条说"小区有点老但周边生活方便",另一条说"房东人不错"。

他记下了联系电话,准备明天打过去问。

然后他关掉App,坐在那里,看着窗外。

青旅的公共区域有一面落地窗,外面是一条小巷,巷子对面是一家便利店,门口挂着24小时营业的灯牌。天已经黑了,路灯亮着,偶尔有人走过。

他想起第一次来北京的时候,也是在这样的夜里。他从K572次列车上下来,出站口的人流裹着他往前走,他在候车厅的塑料椅上坐到天亮,用手机搜最便宜的青旅。

那时候他不知道自己要做什么。

现在他知道了吗?

他想了想,答案是:知道一部分。他知道自己要做一个AI产品,服务中小企业。他知道自己有方小满,有开源仓库,有姜意画的那张地图。他知道自己没有钱,没有平台,没有人脉。

但不知道的部分比知道的多。

他不知道产品具体长什么样,不知道怎么让商户付钱,不知道两个月后账上还能剩多少,不知道沈渡会不会来找麻烦。

这些问题他现在回答不了。

但他不焦虑。

不是因为他有了答案,是因为他决定先走再说。焦虑是在原地打转才会有的情绪,往前走的时候,焦虑会被别的东西替代——疲倦、困惑、偶尔的兴奋、偶尔的恐惧。

这些东西加在一起,叫做活着。


手机又响了。

他以为是方小满,拿起来一看,是沈渡。

一条消息,没有表情,没有图片,只有一行字:

"知行,走了就好。但记住一件事——你离开灵犀之后,没有人再替你挡子弹了。"

林知行盯着这条消息看了很久。

他在想沈渡说这句话的意思。

表面上看,这是一个善意的提醒。在灵犀的时候,沈渡确实替他挡过一些东西——周睿的打压、权限的收紧、数据的争议。每次他惹了麻烦,沈渡都会出面收拾,然后在饭桌上教他下次怎么做。

但沈渡没有说的是,那些麻烦有一半是他自己造成的。

周睿打压林知行,是因为林知行是沈渡的人。权限被收紧,是因为林知行动了别人的数据。数据有争议,是因为沈渡让他做可信度评分,却没告诉他哪些数据能碰哪些不能碰。

沈渡替他挡的子弹,有一部分是从沈渡的方向射过来的。

他把这条消息看了三遍,打了三个字:"我知道。"

然后他删掉了。

他打了另外三个字:"谢谢你。"

又删掉了。

他打了五个字:"你说得对。"

还是删掉了。

最后他什么都没打。

他把手机锁屏,放在桌上,看着屏幕暗下去。

有些话不需要回复。

回复"我知道",像是在说我不怕。回复"谢谢你",像是在说我还在乎你的认可。回复"你说得对",像是在认输。

他不想说这些。

他想说的是:我不需要你替我挡子弹了,因为我不打算再站在需要别人挡子弹的地方。

但这句话说出来太长,而且沈渡不会听懂。

所以他选择不回复。


夜深了,青旅的公共区域安静下来。打呼噜的隔壁床铺已经睡了,用英语聊天的那群人也走了。只剩下前台的灯还亮着,值班的人在看手机。

林知行把背包的拉链拉好,站起来,往楼梯口走。

走到一半,他停下来,回头看了一眼那张空桌子。

桌上什么都没有。

他刚才用过的那台借来的笔记本电脑已经还给前台了,手机在口袋里,背包在肩上。

桌上只有灯光的影子,一格一格的,像棋盘。

他看了两秒,转身上楼。

回到上铺,他把背包放在床脚,躺下来,盯着头顶的床板。

上铺的床板上有一道划痕,不知道是谁留下的。划痕不深,但很长,从左边延伸到右边,像一条没有标注的地图线。

他想起方小满大一的时候在宿舍床板上刻过一行字:"干就完了。"

那行字现在还在那张床板上,在四川的某个房间里,或者已经被新房客用油漆盖住了。

他闭上眼睛。

明天要做的事很多。找房子、看租房合同、算账、等方小满的消息。后天也很多,大后天也很多。

但他不着急。

一件一件来。

(本章完)