第一百零八章 斯坦福的邮件
那封邮件躺在收件箱最底下,标题是英文的,一长串,林知行差点直接勾选删除。
是周二上午。他坐在合租房的折叠桌前,二手显示器上是credit-score-lite的GitHub后台。昨晚刚合并了一个PR——一个武汉的程序员帮他修了API返回格式的bug,commit信息写得很规范,还附了测试用例。star数涨到了两千一百四十七。
他习惯性地打开邮箱,想看看有没有新的issue通知。
邮箱里躺着七封新邮件。前五封是GitHub的自动通知,有人给仓库加了星标,有人提了文档错别字的issue。第六封是方小满转发的一个孵化器链接,主题写的是"这个要不要试试"。
第七封的发件人是一串他不认识的英文名:dchen42@stanford.edu。主题栏写着:Invitation to speak at Stanford AI Emerging Markets Webinar。
林知行扫了一眼,以为是垃圾邮件。Stanford这个词在他的认知里和他隔着十万八千里——那是另一个世界的东西,和一个在管庄西里合租房里写代码的大专生没有关系。
他的鼠标移到了删除按钮上。
"等一下。"
方小满从旁边探过头来。他刚洗完脸,头发还滴着水,手里拿着一条毛巾。他盯着屏幕看了两秒,眼睛忽然亮了。
"斯坦福?"
"垃圾邮件吧。"林知行说。
"你打开看看。"
林知行犹豫了一下,点开了邮件。
正文是英文的,不长,四段话。发件人叫Daniel Chen,自我介绍是斯坦福计算机系的研究生,正在组织一个线上技术分享会,主题是"AI Applications in Emerging Markets"。他在GitHub上看到了credit-score-lite的仓库,觉得林知行做的可解释AI工具很有意思,想邀请他做一次四十分钟的分享,面向斯坦福和硅谷的AI从业者。
分享时间是两周后,北京时间晚上十点。
林知行读完,把邮件往上翻了翻,看了看发件人的域名——@stanford.edu,不是什么垃圾邮件服务器。他又点开Daniel Chen的GitHub主页,看到了斯坦福的认证标签,star了几个AI相关的开源项目,最近一次commit是三天前。
"是真的。"他说。
方小满把毛巾搭在椅背上,凑得更近了:"斯坦福请你做分享?"
"嗯。"
"你去不去?"
林知行没回答。他盯着邮件里的"Emerging Markets"几个字,脑子里在转——新兴市场,他做的东西算新兴市场吗?他做的不过是给小商户用的AI决策工具,用的技术也不前沿,半结构化输入、规则引擎、轻量级解释层,没有一样是拿得出手的"创新"。斯坦福的人为什么要听他讲?
"你在想什么?"方小满问。
"在想我配不配。"
方小满愣了一下,然后笑了:"你又来了。"
"什么意思?"
"你每次遇到好事,第一反应都是'我配不配'。开源仓库涨star的时候你说'可能是误点的',姜意姐约你吃饭你说'她可能只是客气',现在斯坦福请你做分享你说'我配不配'。你什么时候能换个反应?"
林知行看着他:"换什么反应?"
"比如'老子当然配'。"
"我不说脏话。"
"那就'我当然配'。"
林知行没接话。他把邮件又读了一遍。Daniel Chen在最后一段写道:We believe your experience building AI tools for real-world small businesses in China is exactly the kind of practitioner perspective our audience needs.
Practitioner perspective.实践者视角。
不是因为他技术强,不是因为他学历高,是因为他在真实世界里做过事。这个理由比任何夸奖都让他觉得踏实。
"我去。"他说。
方小满拍了一下桌子:"这就对了。"
两周的准备时间,比他想象的要难。
首先是英语。
林知行的英语水平停留在"能看文档、能读论文、但说不出来"的阶段。大专三年他没上过几节英语课,偶尔去也是坐在最后一排睡觉。后来做开源项目,和国外开发者交流全靠打字——GitHub的issue评论、Stack Overflow的帖子、偶尔的邮件往来,都能用翻译工具辅助。
但分享会不是打字。是面对摄像头,用英语讲四十分钟,然后回答问题。
他打开手机上的英语学习APP,搜了一下"技术演讲英语",出来一堆课程,最便宜的九十九块。他看了看账上余额,关掉了APP。
"方小满。"他说。
"干嘛?"
"你英语怎么样?"
"四级没过。"方小满说,"但我口语比你好,我以前在火锅店打过工,接待过外国客人,会说'Hello'、'How many people'和'This way please'。"
"那没用。"
"那你找姜意姐啊。她复旦新闻系的,英语肯定好。"
林知行想了想,给姜意发了条消息。
姜意回得很快:你用英语做分享?可以啊。稿子写好了吗?发给我看看。
林知行花了三天写稿子。从排课系统讲起,讲到半结构化输入、决策日志、credit-score-lite的开源过程,最后讲到他在灵犀科技的经历——当然,隐去了公司名字,只说"一家大型AI公司"。
稿子写了五千个英文单词。他逐句查了语法,把不确定的句子标红,然后发给姜意。
姜意改了一下午。她没有直接改他的句子,而是在旁边加批注:这句太长了,拆成两句;这个术语用错了,应该用这个;这段逻辑不通,先说结论再展开。批注比正文还多。
林知行按她的意见改了三遍,改到第四遍的时候,姜意说:可以了。但我建议你不要背稿子,背稿子的人一紧张就忘。你列一个提纲,每个部分记三到五个关键词,其他的现场发挥。
"我现场发挥不了。"林知行说。
"那就练。"姜意说,"你对着镜子讲十遍,讲到第十遍的时候就不会紧张了。"
他真的对着镜子讲了十遍。
前五遍磕磕绊绊,经常卡在某个词上想不起来,然后低头看稿子。第六遍开始好一些,他学会了用简单的词替代复杂的——不会说"methodology"就说"method",不会说"quantitative"就说"with numbers"。第八遍的时候他基本能脱稿了,虽然语法还是一塌糊涂,但至少能把意思说明白。
方小满在旁边听了三遍,评价是:"你的英语听起来像谷歌翻译念出来的。但意思我听懂了。"
"谷歌翻译念出来的,是什么意思?"
"就是每个词都对,但连在一起不像人话。"
林知行没理他,继续练。
分享会那天晚上,北京时间十点,旧金山时间早上七点。
林知行坐在折叠桌前,面前是那台二手显示器,显示器顶上夹着一个方小满从隔壁收废品的大爷那里借来的外接摄像头——画质不好,但能用。他穿着那件白衬衫,领口系到最上面一颗扣子,头发用水抿了一下,勉强整齐。
方小满坐在床沿,戴着耳机,准备旁听。
林知行点开Zoom链接的时候,手心出了一层汗。
屏幕亮起来,一个二十多岁的年轻男人出现在画面里,圆框眼镜,短发,穿着斯坦福的灰色卫衣,背后是一面白墙,墙上贴着几张论文打印稿。
"Hi Lin, I'm Daniel. Can you hear me?"
林知行的嗓子发紧。他清了一下喉咙:"Yes, I can hear you."
Daniel笑了:"Your English is better than I expected. Some of the Chinese developers I invited before, they insisted on using a translator."
"我练了十遍。"林知行说,然后意识到说错了——应该说英语。他补了一句:"I practiced ten times."
"Great. We have about forty people in the audience right now, mostly grad students and some industry folks from the Bay Area. You can start whenever you're ready."
四十个人。林知行看了看参会者列表,屏幕上滚动着一串英文名和机构名:Stanford、Berkeley、Google、Meta、a16z。他一个都不认识。
他打开共享屏幕,放出第一页slides。标题是他用英文写的:AI for Real-World Small Businesses: A Practitioner's Journey from Scheduling Systems to Credit Scoring.
"So,"他开口了,声音有点抖,"today I want to share my experience building AI tools for small businesses in China. I'm not a researcher. I don't have a PhD. I'm just a developer who spent the last two years trying to solve real problems for real people."
他停了一下,看了看屏幕上的参会者数字——四十三人。比刚才多了三个。
"I'll start from the beginning. Three years ago, I was a college student——not a good college, just a regular vocational school in Hunan province. My first project was an AI scheduling system for a local education company with thirty-seven branches..."
他开始讲排课系统。从约束满足问题讲到半结构化输入,从怀孕女教师被排满课表的数据危机讲到决策日志的设计——每条AI建议旁边加一条人类可读的解释,让老师知道系统为什么这么排。
讲到这里的时候,他注意到聊天框里有人打字。一个叫Sarah的参会者写道:This "decision log" concept is really interesting. It's similar to what we call "explainability" in the field, but the implementation is much more practical.
林知行看着这条消息,心跳快了一拍。他清了清喉咙,继续讲。
四十分钟的分享,他讲了从排课系统到credit-score-lite的完整历程。中间有几个地方卡壳了——讲到"置信度"的时候忘了英文怎么说,停了三秒才想起来是"confidence score";讲到灵犀科技那段经历时措辞很小心,只说"a large AI company",没有提名字。
但整体比他预想的顺利。技术内容是他最熟悉的东西,讲起来不用想,就像呼吸一样自然。英语是磕绊的,但意思说明白了。中间有两个参会者在聊天框里问了小问题,他都回答了。
四十分钟到了,Daniel说:"Great talk, Lin. Let's open it up for Q&A."
聊天框里立刻跳出几个问题。有人问他半结构化输入的技术细节,有人问他开源后有没有遇到知识产权纠纷,有人问他的决策日志模块能不能接入大语言模型。
他一一回答,有的回答得清楚,有的回答得含糊。讲到大语言模型接入的时候,他坦白说:"I haven't tried it yet. The current version uses a rule-based engine because it's cheaper and more predictable. But I think LLM integration is the future direction."
然后,一个叫James的参会者问了一个问题。
问题是打在聊天框里的,但Daniel念了出来:"James asks: Lin, how many SMEs in China are actually using your algorithm right now?"
林知行愣了一下。
他想了想,说:"Currently, about twenty-something. Most of them are small shops in my hometown——fruit stores, hardware stores, convenience stores."
聊天框里安静了两秒。然后James又打了一行字:"Twenty-something users, but your GitHub repo has over two thousand stars. That's a huge gap. Why do you think so few people are actually using it?"
林知行盯着屏幕上的那行字,没有马上回答。
二十几家。两千多个star。
这个差距他一直知道,但从来没有正面面对过。他知道star不等于用户,知道开源社区的大多数star只是"收藏"而不是"使用",知道从"觉得有意思"到"真的用起来"之间隔着一条很宽的河。
但他不知道怎么回答James的问题。
他想了大概十秒钟。十秒钟在Zoom会议里很长,长到Daniel轻声问了一句:"Lin? Are you there?"
"Yes,"林知行说,"I'm thinking."
他又想了五秒,然后开口了。
"Because algorithms are free,"他说,"but the step of making people trust the algorithm——that step requires someone to walk over."
他说这句话的时候没有看稿子,也没有在脑子里翻译。这句话是从他嘴里自己跑出来的,像是在某个他没有意识到的地方存了很久,现在被James的问题打开了。
"Two thousand stars means two thousand developers think this is interesting,"他继续说,"but twenty users means only twenty people actually trusted it enough to use it in their real business. The gap between 'interesting' and 'trustworthy' is not a technology problem. It's a human problem. You need someone to go to their shop, sit down with them, explain how the algorithm works, show them the decision log, answer their questions, and then——maybe——they'll try it."
他停了一下。
"That someone is not an algorithm. That someone is a person. And right now, I don't have enough people."
聊天框里安静了好几秒。然后Sarah打了一行字:This is the most honest answer I've heard in a tech talk.
Daniel笑着说:"I think James got more than he expected. Thank you, Lin."
James也打了一行字:Respect.
分享会结束后,林知行关掉Zoom,靠在椅背上。
后背全湿了。白衬衫贴在皮肤上,黏糊糊的。
方小满摘下耳机,从床沿跳起来,走过来拍了一下他的肩膀:"牛。"
"什么牛?"
"最后那段。"方小满说,"algorithms are free but trust requires someone to walk over。我四级没过都听懂了。"
"你听懂了?"
"听懂了大概意思。就是说你的东西免费但没人用,因为没人去跟商户解释。"
林知行点点头。
他站起来,走到窗边。窗外是管庄西里的夜景——路灯昏黄,几辆电动车停在楼下,充电器的指示灯一闪一闪。远处是四环路的车流声,低沉而持续。
"我说的那句话,"他对方小满说,"不是提前准备的。"
"我知道。"方小满说,"准备的话不会那么好。"
林知行转过头看他。
"你知道吗,"方小满说,"你说那句话的时候,语速慢下来了,发音也比前面好。好像那一刻你不紧张了。"
林知行想了想。确实,说那句话的时候他不紧张了。不是因为他练了十遍,是因为那句话是真话——他真的觉得,算法不是问题,信任才是。这个想法在他脑子里转了很久,从排课系统的时候就开始了,但一直没有说出口。
今天被James一问,它自己跑出来了。
"你说完那句话之后,"方小满继续说,"聊天框里有好几个人打'bravo'。你知道bravo什么意思吗?"
"不知道。"
"我也刚查的。是意大利语,意思是'太棒了'。"
林知行笑了一下。
他回到桌前,打开邮箱。分享会结束后他的邮箱里多了几封新邮件。他一封一封点开看。
第一封是Daniel Chen发的,感谢他做分享,说会把录像上传到斯坦福的YouTube频道,问他是否同意。林知行回了同意。
第二封是一家新加坡的AI创业公司发来的,说他们在做东南亚市场的中小企业AI工具,对credit-score-lite的技术路线很感兴趣,问有没有合作可能。
第三封是一个硅谷的产品经理发来的,说他正在做一个面向美国小商户的AI决策工具,想问问林知行的半结构化输入方案的技术细节。
第四封是一家国内投资机构的分析师发来的,措辞很客气,说"在斯坦福的分享会上看到了您的项目",想了解一下产品的商业模式和用户数据。
四封邮件,四种方向。林知行把每封都读了两遍,没有马上回复。
他把目光移到第五封邮件上。
发件人:Lu Keying,邮箱后缀也是@stanford.edu。主题栏只写了一行:Re: credit-score-lite — information loss issue。
他点开邮件。
正文很短,只有四行:
Hi Lin,
I watched your talk today. Your approach to explainable AI for small businesses is practical and well-designed.
However, I noticed that your algorithm has information loss in multi-condition cross-reasoning. When multiple factors interact (e.g., weather + sales history + customer traffic), your current aggregation method loses nuance by averaging instead of weighting.
I have a proposed solution using attention-based weighting. Happy to share if you're interested.
Best, Lu Keying MS Data Science, Stanford University
林知行盯着屏幕,手指停在鼠标上,没有动。
信息损失。多条件交叉推理。注意力机制加权。
这几个词他都认识,但连在一起的时候,它们在他脑子里引发了一连串的反应。
赵鸣岐。
他想起几个月前,赵鸣岐在GitHub上给他提的那个issue。原文他记不太清了,但核心意思和这封邮件几乎一模一样:你们的解释层在处理多条件交叉推理时存在信息损失,建议用注意力机制加权替代当前的简单求和。
当时他和赵鸣岐讨论了一阵,觉得这个方向是对的,但没有深究——那时候他还在灵犀科技上班,精力全被内部的项目占了。
现在,一个斯坦福数据科学硕士,一个他完全不认识的人,独立地指出了同一个问题。
这说明什么?
说明这个问题不是赵鸣岐的个人看法,是一个真实存在的技术缺陷。而且,陆可盈——他把名字在心里默念了一遍,陆可盈——她不仅看到了这个问题,还提出了方案。注意力机制加权,这个方向比他和赵鸣岐当时讨论的更具体。
他把邮件又读了一遍。
"怎么了?"方小满问。他注意到林知行的表情变了——从刚才的放松,变成了现在的专注。
"有人指出了我的算法的一个问题。"林知行说。
"什么问题?"
"信息损失。在多个条件同时影响决策的时候,我的算法会丢失一些细节。"
"严重吗?"
林知行想了想。对目前的用户来说——那些水果店、五金店、小餐馆——不严重。他们的决策场景相对简单,三四个变量就够了,信息损失的幅度在可接受范围内。
但如果要扩展到更复杂的场景呢?比如连锁门店的库存优化,涉及天气、季节、促销、客流、供应链等多个变量同时作用,信息损失就会累积,决策质量会明显下降。
"现在不严重,"他说,"但以后会严重。"
方小满看了看屏幕:"这人谁啊?"
"斯坦福的,数据科学硕士。叫陆可盈。"
"男的女的?"
林知行看了看邮箱名字:"应该是女的。"
"斯坦福的女硕士给你发邮件?"方小满的嘴角翘了一下,"你最近桃花运不错啊。"
"她说的是技术问题。"
"技术问题也可以是桃花运的开始。"
林知行没理他。他把陆可盈的邮件最小化,打开了GitHub,翻到赵鸣岐几个月前提的那个issue。
issue标题是:Multi-condition cross-reasoning accuracy degradation。正文里赵鸣岐写了一段详细的分析,附了数学推导和测试数据。林知行当时只回复了一句"Thanks for the insight, will look into it",然后就没有然后了。
他把陆可盈的邮件和赵鸣岐的issue并排放在屏幕上。
两份分析的切入点不同——赵鸣岐是从理论层面指出问题,陆可盈是从实际应用层面指出问题。但核心结论一样:简单求和在多条件场景下会丢信息,需要用更精细的加权方式。
而且陆可盈提到了"注意力机制"。这个方向比赵鸣岐当时建议的更进一步——不是简单的加权,是动态的、根据输入条件自动调整权重的机制。
林知行关掉GitHub,靠在椅背上,看着天花板。
天花板上有一道裂缝,从墙角延伸到灯座附近,形状像一条分叉的河流。他每天晚上躺在床上都能看到这道裂缝,已经看了两个月了。
"方小满。"他说。
"嗯?"
"今天这个分享会,值了。"
"因为斯坦福的面子?"
"不是。因为有人指出了我看不到的问题。"
方小满看着他,没说话。
林知行继续说:"我在灵犀的时候,沈渡教了我很多,但他从来不指出我的技术问题。他只教我怎么在公司里生存。赵鸣岐指出了问题,但那时候我没时间处理。今天这个陆可盈,一个我不认识的人,独立地发现了同一个问题,还给了方案。"
"所以呢?"
"所以我要回她。"林知行坐直身体,把陆可盈的邮件重新打开,"我要看看她的方案到底是什么。如果真的比我的好,我就用。"
"你不介意承认自己有问题?"
"算法有问题很正常。"林知行说,"没有问题的算法不存在。重要的是发现问题之后怎么修。"
他开始打回复邮件。
打了三行,删掉了。又打了五行,又删掉了。
方小满在旁边看着他:"你写个邮件怎么比写代码还难?"
"我在想怎么措辞。"林知行说,"对方是斯坦福的,我不能太谦虚也不能太自大。要表达出'我认可你的发现,但我也不是白给的'这层意思。"
"你想太多了。"方小满说,"就说'谢谢你指出问题,方案发给我看看',不就完了?"
林知行看着他:"你做生意的天赋比写代码强多了。"
"我知道。"
林知行重新打了一版:
Hi Lu Keying,
Thank you for watching my talk and for raising this issue. You're right — the current aggregation method does have information loss in multi-condition scenarios. A colleague of mine pointed out the same problem a few months ago, but I haven't had the bandwidth to address it.
I'd love to see your proposed solution. Could you share a more detailed write-up or code?
Best, Lin Zhixing
他读了一遍,觉得可以。语气不卑不亢,既承认了问题,又暗示这不是他第一次听到这个观点——"a colleague of mine pointed out the same problem",赵鸣岐确实指出了,只是他没处理。
他点了发送。
邮件发出去之后,他盯着收件箱看了一会儿。五封新邮件安静地躺在那里,每一封都是一个方向,一个可能性。
"你说,"他对方小满说,"这些邮件,先回哪封?"
方小满想了想:"先回投资机构的那封。"
"为什么?"
"因为他们有钱。"
林知行笑了。
"不。"他说,"先回陆可盈的。"
"为什么?"
"因为她看到了我看不到的东西。"林知行说,"钱可以再赚,但一个能指出你算法缺陷的人,不多见。"
方小满看着他,点了点头。
"行。"他说,"那就先回她。其他的明天再说。"
林知行关掉邮箱,关掉电脑。屏幕暗下去的时候,他看到自己的脸映在黑色的显示器上——瘦,戴眼镜,头发有点乱,但眼睛是亮的。
他站起来,走到窗边。
窗外的夜色沉下来,四环路的车流声变小了,路灯在远处排成一条线,像一行没有写完的代码。
他想起刚才在分享会上说的那句话——"algorithms are free, but the step of making people trust the algorithm requires someone to walk over"。
那句话是他自己的。是他从排课系统到灵犀科技到今天,两年时间里慢慢长出来的。
现在,一个斯坦福的人告诉他:你的算法有问题。
这不是打击。这是礼物。
"方小满。"他说。
"又干嘛?"
"我觉得,我们的产品,要升级了。"
方小满没问为什么。他只是说:"好。那你告诉我怎么升,我来跑。"
林知行点了点头。
他回到桌前,打开台灯。灯光打在白板上,照亮了那张K572时刻表,父亲的红圈在灯光下很醒目。
他在白板的空白处写了一行字:
问题:信息损失。 方向:注意力加权。 来源:赵鸣岐 + 陆可盈。 下一步:研究方案,评估可行性。
写完之后他看着这四行字,觉得自己的产品像一艘正在海上航行的船——方向是对的,但船底有洞。以前洞小,水进得慢,不影响航行。现在有人指出了洞的位置。
该补了。
(本章完)