Skip to content

第五十六章 破茧

回到宿舍是比赛后第三天。

火车是早上八点的,从长沙到学校所在的城市要坐六个小时。方小满在车上睡了一路,头歪在靠窗的位置,口水差点淌到肩膀上。陈一鸣戴着耳机看技术文档。苏雨晴坐在最靠过道的位置,翻一本不知道什么书。

林知行坐在方小满旁边,没睡。

窗外的风景从城市的楼变成农田,从农田变成山,从山变成楼。六个小时,他没怎么看手机,也没怎么想事情。就是看着窗外,偶尔眨一下眼。

到站的时候是下午两点。四个人在出站口分开。方小满说他要回宿舍补觉。陈一鸣说他要去实验室还钥匙。苏雨晴说她叔来接她。

"那就……"林知行说。

"群聊。"方小满挥了挥手,背着包走了。

陈一鸣点了一下头,转身往另一个方向。

苏雨晴说了句"学长再见",朝停车场的方向走了。

林知行站在出站口,背着包,看着他们三个的背影消失在人群里。

他没有打车。从车站到学校走路大概要二十分钟。他走回去的。

九月初的天气还是很热。马路两边的法桐树叶子还是绿的,阳光从叶子的缝隙里漏下来,在人行道上打出一地碎影。他走在碎影上,包带勒着肩膀,有点酸。

宿舍楼很安静。这个时间点大部分人都在上课或者午休。他刷卡进门,上楼,推开401的门。

宿舍里没人。方小满还没回来,估计还在路上磨蹭。

林知行把包放在椅子上,没开灯。九月的阳光从窗户照进来,在地板上铺了一层暖色。他坐在床沿上,什么也没做。

坐了多久他没算。可能是十分钟,可能是半小时。阳光的位置从地板移到了桌腿上。

他起身,把笔记本电脑从包里拿出来,放在桌上,掀开盖子。

屏幕亮了。桌面还是那张默认壁纸,蓝色的渐变。任务栏上停着几个他常用的软件——VS Code、Chrome、微信。

他打开了一个新文件。

不是代码文件,是文本文件。他习惯用.txt记东西,不用Word。

文件名他打了几个字:人生算法_vN。

N是版本号。他已经不记得这是第几版了。

光标在第一行闪烁。

他开始打字。

function lifeAlgorithm(input) {
    let ability = input.ability;       // 能力
    let education = input.education;    // 学历
    let effort = input.effort;          // 努力
    let luck = input.luck;              // 运气

    let recognition = calculate(ability, education, effort, luck);
    return recognition;
}

他盯着这段代码看了很久。

这段代码他写过很多次。有时候变量名不一样,有时候函数名换一个,有时候多加几个参数。但本质是一样的:输入是一堆东西,输出是"认可"。

从第一章开始他就在跑这个算法。走廊里听到"大专生就是混日子的"那句话时,他在想怎么提高ability。答辩翻车时,他在想effort够不够。投十七份简历被拒时,他知道education这个变量他改不了。比赛没得奖时,他把所有变量都检查了一遍——ability够了,effort满了,education改不了,luck……

luck是个什么?

他在代码后面加了一个函数。

function calculate(ability, education, effort, luck) {
    // TODO: 这个公式到底是什么?
    if (education < threshold) {
        return null;  // 直接被过滤
    }
    return ability * effort * luck;
}

不对。他删掉了。

他把整个文件里的代码删掉,重新打。

function lifeAlgorithm(input) {
    let ability = input.ability;
    let education = input.education;
    let effort = input.effort;
    let luck = input.luck;

    // 第一版:ability + effort → recognition
    // 实际结果:ability够了,effort满了,recognition不稳定

    // 第二版:加education
    // 实际结果:education是硬门槛,过不了就是null

    // 第三版:绕过education,用作品说话
    // 实际结果:作品够了,比赛规则偏好不同

    // 第四版:——
    return ???;
}

他盯着问号看了很久。

这个问号他填不了。不是因为他不会写代码,是因为这个算法本身就是错的。

能力、学历、努力、运气。这四个变量,他一直在调。能力他提上去了——从不会用AI到做出排课系统到做出半结构化输入。学历他改不了——那是过去的标签。努力他一直在做——从第一笔五百块到现在,他没有一天不在写代码。运气……

运气是什么?运气是沈渡刚好看到他的帖子。运气是方小满刚好认识张老板。运气是姜意刚好在评论区批评他。运气是李教授刚好在评委席上给满分。

这些事情发生了,他的"认可"就多一些。这些事情没发生,他的"认可"就少一些。

但他控制不了这些事情。

他一直在算一个他控制不了的算法。

鼠标光标在问号后面闪烁。一下,一下,一下。

他选中了整个文件。

delete键。

文件变成空白。

光标在第一行继续闪烁。

他没有关掉文件。他把手指放在键盘上,打了一个新的标题。

产品路线图 v1.0

不是人生算法了。是产品路线图。

他开始往下写。

一、现状

比赛没得奖。
但比赛过程中——
- 17家商户在用我们的产品
- 3家在付费(100元/月)
- 其中水果店王老板损耗减少30%(月省约2000元)
- 张老板的排课系统仍在运行(37校区零投诉)

这些东西是真的。

二、接下来要做三件事

1. 开源
- 把产品的核心代码开源
- 让更多商户能免费使用
- 让更多开发者能在上面二次开发

2. 继续服务
- 17家商户继续维护
- 3家付费商户继续迭代
- 把产品打磨到真正好用

3. 下一步
- 参加下次比赛(如果还有)
- 或者不参加,直接把产品推向市场
- 目标:让100家商户用上这个产品

三、团队

林知行——技术
方小满——商务/运营
陈一鸣——后端开发
苏雨晴——用户对接/数据

他写完了。看了一遍。

没有提沈渡的技术授权。没有提赵鸣岐的清华团队。没有提评委的满分。

只有那些真实的东西。

他把文件保存了,关掉。

方小满还没回来。估计是到校门口吃了个饭,或者在哪个角落抽烟。他想起方小满在面馆里说的那句话——"行吧"。两个字,轻轻的,但比任何安慰都管用。

他拿起手机,打开了团队群。群名叫"3847",是他们的参赛编号。比赛结束后没有人改过这个名字。

他把产品路线图截图,发到群里。

发完之后他放下手机,等着。

一分钟。两分钟。

手机响了。

方小满第一个回:"开源?你确定?"

陈一鸣第二个:"开源的话我可以把代码整理一下。注释也补一补。"

苏雨晴第三个,过了两分钟才回:"我叔说他的朋友也想要这个。开出去的话是不是更多人能用?"

林知行看着这三条消息。

他想起凌晨三点在宿舍里改方案的那些夜晚。想起方小满在阳台上抽烟的背影。想起陈一鸣发的第一个表情包——一只猫竖起大拇指。想起苏雨晴在水果店蹲点时被老板娘塞了一袋橘子。

这些东西不是数据点,不是变量,不是算法里的参数。

它们是真的。

他在群里回了一条消息:"确定。代码整理的事麻烦一鸣了。苏雨晴你帮我问问你叔的朋友,具体需要什么功能。"

陈一鸣回了一个字:"好。"

苏雨晴回了一个字:"嗯。"

方小满没有再回。但林知行知道他在看。


晚上九点。

宿舍的灯开着,方小满在上铺看手机,偶尔发出一声"啧"。

林知行坐在自己的位置上,打开了微信。

他在通讯录里翻了一下,找到了沈渡的名字。

上次跟沈渡的消息停留在比赛前,沈渡说"不急"。那是关于技术授权的事——沈渡想把他的解释层技术作为底层模块接入灵犀科技的教育AI项目。

林知行当时没有回复。

现在他要回复了。

他打了一段字,看了一遍,删掉。重新打,又看了一遍,删掉。

最后他打了这样一段话:

"沈总,技术授权的事我考虑过了。我不打算授权单个模块。但如果你有兴趣,我们的产品准备开源。开源之后你可以在上面做任何事,不需要我的授权。"

发出去之前,他又看了一遍。

这段话里没有犹豫,没有客套,没有解释原因。

他点了发送。

消息发出去了。对话框里多了他那条绿色的气泡。

他等着。

方小满在上铺翻了个身,床架子晃了一下。

林知行拿起手机又放下。放下又拿起。

他知道沈渡不会秒回。沈渡不是那种人。

十分钟过去了。

二十分钟过去了。

手机响了。

沈渡回了一条消息:"开源?你想清楚了?"

四个字加一个问号。没有表情,没有语气词。跟沈渡这个人一样,干净利落。

但林知行读出了那个问号背后的含义。

你想清楚了?——开源意味着放弃商业壁垒。意味着别人可以在你的代码上做任何事,包括做一个比你更好的产品跟你竞争。意味着你辛辛苦苦写的东西变成公共财产。一个创业公司,开源核心产品,这是自杀。

林知行打字回复:"想清楚了。开源意味着放弃商业壁垒。但我想做的不是卖技术,是让更多商户能用上AI。如果灵犀科技愿意在开源版本上做商业化,我们是合作伙伴,不是授权关系。"

发出去了。

他等着。

一分钟,两分钟,五分钟。

沈渡没有回复。

林知行把手机放在桌上,往椅背上靠了靠。

方小满在上铺说了一句:"跟谁聊天呢?"

"沈渡。"

"哦。"方小满顿了顿,"他怎么说?"

"他问我有没有想清楚。"

"那你有没有?"

林知行想了一下。

"有。"

方小满没再问了。


第二天早上七点。

林知行被闹钟叫醒。他睁开眼,第一件事是拿手机。

微信里有几条新消息,不是沈渡的。

他打开邮箱。

收件箱里有一封新邮件。发件人:沈渡。时间:今天早上6:47。主题:转发。

他点开。

邮件是一封转发。沈渡把他的产品介绍文档转给了一个邮箱——名字后面跟着"@lingxi-tech.com"。

邮件标题是:"这个项目值得关注。"

邮件正文只有一句话。

"创始人是一个大专生。"

林知行盯着这句话看了很久。

"创始人是一个大专生。"

从第一章开始,这句话一直是贬义的。

走廊里听到的"大专生就是混日子的"。HR回复的"公司目前只接受统招本科及以上学历"。周建华听完演示后说的"哦,那挺好的"。赵鸣岐在走廊里说的"如果你以后不想做了可以找我聊"。

现在,沈渡把它写在一封发给商务团队的邮件里。

不是贬义。不是标签。不是歧视。

是一个卖点。

林知行把手机放下,坐起来。

阳光从窗户照进来,在地板上铺了一层暖色。跟昨天下午他坐在这里的时候一样。

但有些东西变了。

昨天他坐在这个地方,打开电脑,写了一段人生算法的伪代码,然后删掉了。

今天他坐在同一个地方,打开邮箱,看到了一封邮件,上面写着"创始人是一个大专生"。

他想起方小满说的那句话——"行吧"。

他想起陈一鸣说的那句话——"开源的话我可以把代码整理一下。"

他想起苏雨晴说的那句话——"我叔说他的朋友也想要这个。"

他想起李教授说的那句话——"你那个'让用户能看懂AI在想什么'的理念,比一等奖的作品更让我印象深刻。"

他想起父亲说的那句话——"嗯。"

这些人都没有说"你很厉害"或者"你一定会成功"或者"学历不重要"。

他们只是在做自己的事。方小满在帮他拉客户。陈一鸣在帮他整理代码。苏雨晴在帮他对接商户。李教授在帮他证明理念的价值。父亲在用一个"嗯"字回应他的一切。

这些东西不是算法能算出来的。

也不是算法需要算的。

林知行把邮箱关掉,打开了昨天写的产品路线图。

他在文档末尾加了一行字:

"产品路线图 v1.0——2024年9月。"

然后他保存文件,关掉电脑,起身去洗漱。

方小满还在上铺睡着。呼噜声很轻,像猫打的那种。

林知行拿上毛巾和牙刷,打开了宿舍门。

走廊里很安静。早上七点十分,大部分人还没起。

他走在走廊里,脚步声在地板上轻轻回响。

走到楼梯口的时候,他停了一下。

他想,人生算法跑不出来的那些东西——认可、运气、学历——他以后不去算了。

他要算的是另一个东西。

产品路线图。

输入是:十七家商户的需求,三个付费用户的数据,一个开源的决定。

输出是:让更多人能用上AI。

这个算法很简单。不需要伪代码。不需要版本号。

只需要一步一步往前走。

车到山前必有路。

他下楼了。

(本章完)