第七十七章 署名
项目会定在周一上午十点,五楼的小会议室。
林知行九点五十到的时候,程浩已经在了。
程浩坐在长桌的主位,面前摊着一台银色的MacBook,屏幕上是一份PPT。他穿着浅蓝色的衬衫,袖口扣得整整齐齐,头发用发胶抓过,比平时多了一点形状。
"小林,坐。"程浩朝他点点头。
林知行在程浩对面坐下,打开自己的ThinkPad。开机画面转了两圈,风扇呜地响了一声。
"还有谁?"林知行问。
"周总说派两个产品来支援,加上你和我,四个人够了。"程浩翻了翻手机,"沈总说他不参加日常会,有事单独找他。"
林知行点了点头。
沈渡不参加日常会——这意味着项目日常由程浩全权负责。而程浩是周睿的人。
他没有多想。想多了没用。
十点零三分,两个产品经理推门进来。
一个叫孙雯,二十六七岁,扎马尾,戴圆框眼镜,手里攥着一个保温杯。另一个叫赵远,三十出头,寸头,穿着灵犀的黑色文化衫,胸口印着"Build the Future"。
孙雯是教育AI产品组的,赵远是隔壁用户体验组借调过来的。
"程哥,"孙雯坐下后先开口,"周总让我俩跟这个项目。他说用户可理解性这块跟产品侧关联大,需要产品介入。"
程浩点头:"好,人齐了。我先说一下项目背景。"
他把PPT投影到墙上。
第一页是项目名称:"教育AI用户可理解性体系建设"。下面是四行字:项目目标、技术范围、时间节点、负责人。
负责人那一栏,写的是"程浩"。
林知行盯着那两个字看了两秒,然后移开视线。
"PPT是周总帮我改过的,"程浩说,"大家先过一遍背景,有问题随时打断。"
他开始讲。
项目目标分三层:第一层是可信度评分模块的优化和扩展——这部分林知行已经做了初版;第二层是把可解释性框架推广到教育AI产品的其他模块,比如推荐系统、学习路径规划;第三层是建立一套标准化的"AI决策解释模板",让所有模块都能复用。
"核心思路是,"程浩翻到架构图那页,"用一个统一的解释层,给所有AI输出加上人类可读的说明。"
林知行看着那张架构图。
三层结构,最下面是数据层,中间是模型层,最上面是解释层。解释层用红色虚线框标注,旁边写着"核心创新点"。
这张图是他画的。
上周他写技术方案的时候,亲手画的这三层架构。现在它出现在程浩的PPT里,"核心创新点"四个字加粗标红,比他自己写的版本更醒目。
"这个架构的细节,"程浩看向林知行,"小林来讲一下?"
林知行愣了一下。
"好。"
他站起来,走到投影幕布旁边。PPT翻到下一页——技术实现路径,六步流程图,也是他写的。
"第一步是可信度评分的优化,"他说,"目前初版用的是规则引擎加轻量模型,准确率大概78%。下一步要把模型换成微调过的小语言模型,目标是85%以上。"
孙雯举手:"微调的数据从哪来?"
"两部分,"林知行说,"一部分是我们开源项目的十七家商户数据,另一部分是灵犀教育产品的历史用户反馈。第二部分需要产品侧帮忙整理。"
孙雯点头,在本子上记了几笔。
林知行继续讲。从技术选型讲到风险评估,从数据需求讲到测试方案。他讲了十五分钟,语速不快,但每个节点都有具体的数字和依据。
讲完之后他回到座位。
程浩看着他,点了点头。
"讲得清楚。"程浩说,然后转向孙雯和赵远,"产品侧有什么补充?"
赵远翻了翻手里的材料:"我想问一个问题。这个解释层的输出格式,是固定的还是可配置的?"
程浩看向林知行。
"目前是固定的,"林知行说,"但架构上预留了配置接口。如果后续需要针对不同用户群体做差异化展示,可以扩展。"
"这个很重要,"赵远说,"家长端和学生端的解释需求不一样。家长关心的是'这个推荐靠谱吗',学生关心的是'为什么给我推荐这个'。同一套解释逻辑,展示方式要不同。"
林知行点头:"可以在模板层做分支。"
程浩在本子上记了几笔,然后抬头。
"好,技术细节确认了。我来说一下分工。"
他翻开PPT的最后一页——项目分工表。
四个人的名字,每人后面跟着一列任务。
程浩:项目管理、进度跟踪、对外汇报、周报撰写。
孙雯:用户调研、需求文档、产品侧数据整理。
赵远:交互设计、解释模板的视觉规范、用户体验测试。
林知行:核心模块开发、技术方案优化、测试用例编写、文档撰写。
林知行看着自己的那一列。
五项任务,每一项都是"干活"。
程浩的那一列,每一项都是"管理"。
他没有说话。
"有问题吗?"程浩问。
"没有。"林知行说。
散会之后,林知行回到工位。
他打开代码编辑器,把可信度评分模块的仓库克隆下来。文件目录跳出来——src、tests、docs、data,整整齐齐。
他开始写代码。
初版的评分逻辑用的是规则引擎,简单粗暴:检查数据来源的权威性、时效性、一致性,每项打分,加权求和。准确率78%,不高不低。
问题在于规则是硬编码的。每新增一种数据类型,就要手动加一条规则。扩展性差。
他想换成微调模型。
思路是这样的:用灵犀教育产品的历史数据做训练集,让模型自己学习"什么样的回答可信度高"。模型的输出不是一个数字,而是一组特征权重——哪些因素对可信度影响最大。
这比规则引擎灵活得多。但问题是——训练数据从哪来?
他打开灵犀的内部数据平台,搜"用户反馈"。出来几千条记录,时间跨度两年,覆盖十几个产品模块。数据量够了,但格式五花八门——有文字反馈、有评分、有投诉工单、有客服对话记录。
他需要把这些数据整理成训练集。
这不是他一个人能干的活。
他在项目群里发了一条消息:"孙雯,用户反馈数据的整理,大概什么时候能给我?"
孙雯秒回:"周总让我先做Q3的需求优先级排序,大概下周三能排到你这边。"
下周三。
今天周一。
他有五天的空窗期。
林知行盯着屏幕,想了想。五天不能干等。他可以先做另一件事——把模型的训练框架搭好,等数据到了直接跑。
他打开一个新的Python文件,开始写数据预处理的脚本。
中午吃饭的时候,林知行在食堂碰到了程浩。
程浩端着餐盘,看到他,走过来坐在对面。
"上午讲得不错,"程浩说,"你那个三层架构,周总也说思路清晰。"
林知行夹了一筷子青菜:"那是我写的架构。"
程浩的筷子顿了一下。
"我知道,"他说,"PPT里标注了。"
林知行低头吃饭,没有接话。
程浩沉默了几秒,然后说:"小林,我跟你说句实话。"
林知行抬头。
"这个项目,周总的意思是让我来牵头。"程浩说,"不是因为我技术比你强,是因为公司需要一个正式员工来负责。这是流程。"
"我知道。"林知行说。
"但技术这块,你是核心。"程浩说,"我不会写代码,这个你清楚。我的工作是帮你挡掉那些你不需要操心的事——周报、汇报、协调会、跨部门沟通。这些事你做不来,也不应该做。"
林知行看着程浩。
程浩的语气很平,没有居高临下,也没有刻意示好。他只是在陈述一个事实——分工就是这样。
"明白。"林知行说。
程浩点了点头,继续吃饭。
两人沉默了一会儿。
"对了,"程浩忽然说,"周总让我跟你说一件事。"
林知行放下筷子。
"他说,项目组的代码仓库,所有提交都要经过我的review。"程浩说,"不是不信任你,是流程要求。正式员工要对代码质量负责。"
林知行愣了一下。
所有提交都要经过程浩review。
程浩不会写代码。
一个不会写代码的人,要review他的代码。
"好。"林知行说。
他没有多说一个字。
下午两点,林知行回到工位,继续写数据预处理的脚本。
写到一半,他忽然想起一件事——灵犀的教育AI产品之前做过一个"学习路径推荐"模块,那个模块的代码库里,应该有现成的数据预处理工具。
他打开公司的代码仓库,搜"learning path"。
出来十几个仓库。他一个一个点开看,大部分是前端代码,没什么用。翻到第七个的时候,他停住了。
仓库名是"learning-path-prediction",最近一次更新是三个月前。他点开README,扫了一眼。
"基于大模型的教育场景学习路径预测。负责人:赵鸣岐(中科院合作研究员)。"
赵鸣岐的仓库。
他点开代码目录,浏览了一遍文件结构。
代码写得很干净。每个函数都有注释,变量命名规范,模块划分清晰。data目录下有一个preprocess.py文件,专门做数据预处理。
他点开这个文件,看了十分钟。
赵鸣岐的数据预处理逻辑和他的思路完全不同。林知行用的是"先清洗再标注再切分"的三步法,赵鸣岐用的是"先聚类再筛选再增强"的方法。聚类那一步,赵鸣岐用了一个自研的算法,注释里写着"基于教育场景的特殊性,传统聚类方法在小样本下效果不佳,因此自定义了距离函数"。
林知行盯着那段代码看了很久。
距离函数的实现只有二十行,但每一行都在解决一个具体的场景问题——比如"同一学科不同年级的知识点相似度应该比不同学科同一年级的高"。这种领域知识不是从论文里能读到的,是从实际项目中踩坑踩出来的。
他想起赵鸣岐在GitHub上fork他的仓库时写的那句话——"更丑但更实用"。
赵鸣岐的代码不丑。它很漂亮,而且实用。
林知行把preprocess.py的路径复制下来,存进笔记本。
他在想:要不要告诉程浩?
如果告诉程浩,程浩会怎么做?他会把赵鸣岐的代码整合进项目吗?还是会以"知识产权归属"为由拒绝使用?
他不知道。
但他知道一件事——赵鸣岐的代码是公开的,在公司的内部仓库里。它属于灵犀科技的知识产权,任何员工都可以使用。
他关掉赵鸣岐的仓库,回到自己的代码编辑器。
数据预处理的脚本还开着,光标停在第三十七行。
他盯着光标,手指放在键盘上,没有动。
下午五点半,林知行加完班,准备走。
路过赵鸣岐的工位时,他看到赵鸣岐还在。屏幕上是一堆终端窗口,绿色的字符在黑色背景上跳动。
"赵哥,"林知行停下脚步。
赵鸣岐抬头,看到他,点了点头。
"听说你拿了那个可信度评分的项目?"赵鸣岐说。
林知行愣了一下:"你也知道了?"
"沈总在部门群里提了一句。"赵鸣岐说,"说教育AI产品线Q3的重点项目之一,用户可理解性体系建设。"
林知行点了点头。
赵鸣岐看着他,忽然笑了一下。
"你的项目负责人是程浩?"
"对。"
赵鸣岐没有评价。他转过身,从桌上拿起一个U盘,递过来。
"这里面是我之前做学习路径预测时整理的一套数据预处理工具,"他说,"教育场景专用的。你看看有没有用。"
林知行接过U盘,看了看。
"你怎么知道我需要数据预处理?"他问。
赵鸣岐指了指自己的屏幕:"我看到你在代码仓库里翻了我的learning-path-prediction。系统有访问记录。"
林知行的脸有点热。
"我看了你的preprocess.py,"他说,"那个距离函数的设计很有意思。"
赵鸣岐点头:"那个函数是针对教育场景优化的。传统聚类在小样本下跑不动,我换了一种思路——不看文本相似度,看知识点的逻辑关系。"
他顿了顿。
"不过那个函数有个问题,"赵鸣岐说,"在跨学科场景下会失效。我还没来得及修。你要是用的话,注意一下这个边界。"
林知行把U盘放进口袋。
"谢了。"
赵鸣岐摆了摆手,转回去继续敲代码。
林知行走出写字楼,站在门口。
天色还没完全黑,路灯已经亮了。他低头看了看手里的U盘,黑色的外壳,没有任何标签。
赵鸣岐给他这个U盘,是出于善意,还是出于别的什么?
他想起赵鸣岐之前说的那句话——"开源不是商业模式,但可能是你最好的名片。"
名片发给谁看?
他把U盘放进口袋,往地铁站走。
手机震了一下。
程浩在项目群里发了消息:"各位,明天下午两点开项目进度会。小林,准备好可信度评分模块的进展汇报。"
林知行盯着屏幕,打了一个字:"好。"
他锁上屏幕,走进地铁站。
站台上人很多,他被人流裹着往前走。车厢里挤满了人,他站在门边,一只手抓着吊环,另一只手揣在口袋里,指尖碰到U盘的棱角。
赵鸣岐的代码。
程浩的review。
周睿的流程。
沈渡的庇护。
这些东西搅在一起,像一个他还没学会的算法。
他不知道答案是什么。
但他知道,明天下午两点,他要站在程浩面前,汇报"程浩的项目"的进展。
地铁到站了。
他跟着人群走出车厢,刷卡出站。
夜风吹过来,带着一点湿气。
他走在人行道上,路灯把他的影子拉得很长。
口袋里的U盘硌着他的大腿。
他加快了脚步。
(本章完)