第九十七章 试水
林知行回到青旅的时候,天已经全黑了。
六人间里只有他一个人。其他五张床铺叠得整整齐齐,行李箱塞在床底下,充电线绕成团挂在床头——都是出差或找工作的人,白天不在,晚上也不一定回来。
他把背包放在床边,从里面掏出那张A4纸。
姜意画的图。
他展开,铺在膝盖上,又看了一遍。
中心是他自己。几条线连向不同的节点。红线连向开源社区。
他盯着那条红线看了几秒,然后把纸折好,塞进笔记本的夹层里。
笔记本翻到新的一页。
他拿起笔,在页首写了两个字:试水。
第二天是周六。
林知行没有去公司。他在青旅的公共区域找了一个靠窗的位子,打开笔记本电脑,登录了那个匿名GitHub账号。
credit-score-lite仓库的star数是1247。
他上次更新是两周前,加了一个医疗场景的README示例。那时候star是八百多。
他看着那个数字,想了几秒,然后打开代码编辑器。
姜意说得对。他的开源仓库不只是一个备份,是一条路。但他从没认真走过这条路——他只是把代码扔在那里,等别人来发现。
现在他要主动往这条路上走几步。
他花了一整天的时间做了一件事:把可信度评分的核心算法从教育场景里抽出来,写成一个通用框架。
不是简单的代码重构。他需要把灵犀的数据依赖全部剥离,把教育场景的硬编码逻辑替换成可配置的参数,把解释层的模板从"教师"和"学生"换成通用的"用户"和"决策者"。
这个工作量比他预想的大。
教育场景里的很多逻辑是隐性的——比如"可信度评分在0-30分时显示红色警告"这个规则,表面上是通用的,但实际上红色在教育场景里代表"可能误导学生",在医疗场景里代表"可能危及生命",在金融场景里代表"可能造成损失"。三个场景的阈值和措辞完全不同。
他没有试图做一个"万能版本"。而是做了一个可插拔的架构——核心算法不变,但解释层的模板、阈值、措辞都可以通过配置文件自定义。
写完核心代码后,他又花了三个小时写文档。
不是技术文档——那种东西只有程序员看得懂。他写的是面向普通用户的README,用大白话解释这个工具能做什么、怎么用、在什么场景下有用。
他写了三个应用案例:
第一个是医疗场景。一个基层诊所的医生用这个工具给AI辅助诊断结果打可信度分,当分数低于60时自动提醒"建议转诊上级医院"。
第二个是金融场景。一个小型贷款公司的风控人员用这个工具给AI信用评估结果加解释,让客户能看到"你的信用分是720,因为过去12个月逾期0次、负债率低于30%"。
第三个是客服场景。一个电商平台的客服主管用这个工具给AI自动回复加可信度标签,当AI不确定时自动转人工。
三个案例写完后,他从头到尾读了一遍,改了几个措辞,然后点击了提交。
commit信息写的是:v2.0 - 通用化重构,新增医疗/金融/客服场景示例。
提交时间是下午四点二十三分。
提交之后,林知行没有立刻关掉电脑。
他坐在那里,盯着GitHub的页面,看着star数从1247开始跳动。
提交后的第一个小时,涨了三个。
他刷新了一下,又涨了两个。
他知道这不算什么。三个五个star,在GitHub的海洋里连浪花都算不上。
但他还是忍不住每隔几分钟就刷新一次。
第二天是周日。
林知行在青旅待了一整天,没有出门。他在等。
上午十点,star数涨到了1287。比昨天多了四十个。
中午,一个他不认识的用户在issue区留了一条消息:你好,我是某医疗AI公司的产品经理,我们正在做基层诊所的AI辅助诊断系统,你们的可信度评分框架和我们的需求高度匹配。能否聊聊合作的可能性?
林知行盯着这条消息看了很久。
他没有立刻回复。而是点进了那个用户的GitHub主页——注册时间三年,有十几个开源项目的贡献记录,star数最高的一个仓库是关于医疗影像识别的。
看起来是真的。
他想了想,回复了一条:可以。你方便邮件沟通吗?
对方十分钟内回了:当然。我的邮箱是xxxxx@xxx.com。
林知行把邮箱记在笔记本上,没有立刻发邮件。
他需要想清楚一件事:他要以什么身份和这家公司谈。
匿名账号?灵犀的外包工程师?还是……别的什么?
他暂时没有答案。
下午三点,又来了一封邮件。
这次不是GitHub issue,是GitHub的私信功能。发件人的ID他不认识,但自我介绍是一家金融科技公司的技术负责人。
邮件内容很简短:看到你们的credit-score-lite项目,很感兴趣。我们在做小微企业信用评估系统,需要一个可信度评分模块。你们有商业化版本吗?或者愿意做技术咨询?
林知行看着"商业化版本"四个字,心跳加快了一点。
他回复:暂时没有商业化版本。但可以聊聊你们的需求。
对方很快回了:方便加微信吗?
林知行犹豫了三秒,然后把微信号发了过去。
晚上八点,林知行收到了第三封邮件。
这次来自一家做智能客服的创业公司,问的是同样的问题:有没有商业化合作的可能。
三封邮件,三个不同的行业,同一天到达。
林知行坐在青旅的公共区域,笔记本电脑的屏幕把他的脸照得发白。他看着这三封邮件,忽然有一种奇怪的感觉——
这些东西,他在灵犀做的这些东西,原来真的有人需要。
不是灵犀需要,不是沈渡需要,是外面的人需要。
姜意说得对。他的技术有独立价值。
但他没有沉浸在这件事里太久。
因为还有一件事等着他做。
周一早上,林知行照常去灵犀上班。灰色工牌、角落工位、淘汰的ThinkPad。一切照旧。
他打开内网,用"技术调研"的名义申请了访问专利数据库的权限。
这个权限是开放的——灵犀的正式员工可以随时查阅公司的专利申请记录。外包员工需要走审批流程,但审批人只是周睿的助理,一般当天就能过。
林知行上午十点提交申请,下午两点就拿到了权限。
他打开专利数据库,在搜索栏里输入了两个关键词:人工智能、可信度评分。
搜索结果出来了。
灵犀科技在过去两年里一共提交了十七项AI相关专利申请。其中有三项,发明人是沈渡。
林知行点开了第一项。
专利名称是《一种基于多维度特征的AI回答可信度评估方法》。
他往下拉,看到了技术方案的核心描述:
"本发明提出了一种AI回答可信度评估方法,通过构建多维度特征向量,包括语义一致性、知识覆盖度、上下文相关性、用户反馈历史等维度,对AI生成的回答进行可信度评分,并生成人类可读的解释说明……"
林知行的手指停在屏幕上。
这段描述,他太熟悉了。
这不是沈渡的思路,是他的。
他在小城做排课系统的时候,就在用这套方法。后来在灵犀做可信度评分项目,他把这套方法扩展成了完整的框架。核心逻辑、特征维度、评分规则、解释层模板——每一个细节都是他写的。
他继续往下拉,看到了技术方案的流程图。
那张图和他提交给周睿的方案几乎一模一样。只是换了一套术语——"多维度特征向量"代替了"分场景评分框架","知识覆盖度"代替了"数据质量评分"。
本质上是同一个东西。
林知行打开了第二项专利。
名称是《一种面向教育场景的AI决策解释系统及方法》。
技术方案描述:"本发明提出了一种面向教育场景的AI决策解释系统,通过构建决策日志模块,记录AI每一步推理过程,并将技术语言转化为用户可理解的自然语言解释……"
这是他在排课系统上做的"AI解释"功能。
后来在比赛产品里,他把它扩展成了"决策日志"。
现在,它出现在沈渡的专利申请里。
林知行打开了第三项专利。
名称是《一种基于半结构化输入的用户意图理解方法及装置》。
他看到标题的瞬间,脊背发凉。
半结构化输入。
这是苏雨晴提出来的思路,他在比赛产品里实现的。
沈渡连这个都申请了专利。
林知行把三项专利的技术方案图并排截图,保存到了手机里。
然后他开始做一件他以前不会做的事:对比。
他打开了自己的开源仓库credit-score-lite,找到了核心算法的代码注释。
他又打开了专利申请文件,找到了技术方案的详细描述。
一行一行地对比。
相似度不是60%。
是80%以上。
沈渡只是换了一套术语,把"评分"改成"评估",把"解释"改成"说明",把"半结构化"改成"用户意图理解"。但核心逻辑、特征维度、流程步骤——几乎是原文照搬。
林知行关掉了专利数据库。
他靠在椅背上,盯着天花板。
办公室里的空调嗡嗡响着。隔壁工位的程浩在和产品经理讨论需求,声音不大,但能听到几个词——"用户留存""转化率""下周上线"。
林知行没有听进去。
他在想一件事。
沈渡是什么时候开始做这些专利的?
他翻了翻专利申请的时间戳——第一项是八个月前,第二项是五个月前,第三项是三个月前。
八个月前,他还没有入职灵犀。
那时候他的开源仓库还叫另一个名字,star数只有两百多。沈渡是怎么看到的?
他想起来了。
第一次见面的时候,沈渡说过:"你的解释层技术可以作为底层模块接入。"
那时候沈渡就已经在用他的思路了。
林知行掏出手机,打开了备忘录。
他在一个新的笔记里,打了三个字:
他偷的。
然后他盯着这三个字看了很久。
这和被打压不一样。
被周睿打压,是系统性的排挤——你比领导强,所以被针对。这是规则,虽然不公平,但至少是可以理解的规则。
被沈渡删除署名,是权力的分配——功劳归谁,由有权的人决定。这也是规则,虽然不合理,但至少还在"管理"的范畴内。
但偷不一样。
偷是越过了某条线。
沈渡把林知行的开源算法申请成了自己的专利。专利权人是灵犀科技,发明人是沈渡。林知行的名字不在任何地方。
法律上,这可能没问题。开源协议允许商业使用,灵犀的知识产权条款也覆盖了员工在任职期间的技术成果。
但道德上——
林知行在备忘录里又加了一行字:
他从我身上拿走的,比我想象的多。
晚上回到青旅,林知行躺在床上,盯着上铺的床板。
他在想一个问题:沈渡为什么要这么做?
如果只是想用他的技术,完全可以用"合作"的方式——把林知行列为共同发明人,或者在灵犀内部给他一个正式的title。
但沈渡没有。
他选择了偷。
为什么?
林知行用算法思维推演了几种可能。
第一种:沈渡从一开始就在布局。他看中了林知行的开源算法,但不想让林知行知道自己有多值钱。所以他用"外包"的身份把林知行框在灵犀内部,用"庇护"的姿态控制他的产出,然后悄悄把这些产出变成自己的专利。
第二种:沈渡不是主动偷,是被动地"用"。他在行业闭门会上展示这些技术的时候,别人以为是他的。他没有纠正,久而久之,就变成了他的。
第三种:沈渡认为这是理所当然的。灵犀给了林知行平台和数据,林知行的产出归灵犀所有,沈渡作为VP有权代表灵犀申请专利。林知行只是执行者,不是创造者。
三种可能,每一种都指向同一个结论:
在沈渡眼里,林知行不是一个人,是一个工具。
林知行翻了个身,拿起手机。
他打开了GitHub,看了看credit-score-lite仓库的star数——1324。
比昨天又多了几十个。
三封合作邮件还躺在收件箱里,他一封都没回。
他把手机放下,重新盯着床板。
姜意说,开源是为了证明你不需要他们。
现在他知道了——他确实不需要他们。
但沈渡也需要他。
沈渡需要他的算法,他的思路,他的开源仓库。沈渡把这些东西拿走,变成自己的专利,变成自己的筹码,变成自己在行业里的地位。
林知行是一个没有背景的技术人。沈渡选他,就是因为他没有退路。
但现在,他有了退路。
开源仓库里的star,GitHub上的合作邮件,社区里的用户——这些东西加在一起,是一条路。
一条不依赖灵犀、不依赖沈渡的路。
他在备忘录里又加了一行字:
下一步怎么办?
然后他把手机锁屏,塞到枕头底下。
隔壁床有人回来了,背包拉链的声音在黑暗里很响。
林知行闭上眼睛,但脑子里还在转。
他在想沈渡。
想沈渡第一次见他时说的那句话:"你的问题拆解能力比我见过的大多数985硕士都强。"
想沈渡在季度规划会上替他争取项目时说的那句话:"他在AI应用实战领域有非常丰富的经验,开源社区有一千多个star。"
想沈渡在闭门会上和别人交换U盘时的背影。
想沈渡在庆功宴上让他敬的三杯酒。
想沈渡拍着他的肩说的那句话:"你是我带出来的人,我不会亏待你。"
这些画面在他脑子里翻来覆去,像一个没有终止条件的循环。
他翻了个身,把脸埋进枕头里。
明天还要上班。
明天他还要见到沈渡。
他不知道自己会用什么表情面对那个人。
但他知道一件事——
那三个字,"他偷的",会一直留在他的备忘录里。
直到他想好下一步为止。
(本章完)