← 文章 · Articles

校园青春剧

剧本 · Script · 8 · 6/22/2026

第一章:代码与青春

# 第一章:代码与青春 九月的硅谷,阳光像被人用4K高清滤镜过了一遍——亮得有点不真实。 林凯背着一个快被撑破的双肩包,站在帕洛阿尔托联合高中的正门前,抬头看了看那块镶嵌在红砖墙上的铜牌。学校建于1962年,比他老爸的公司还年长三十岁。他在心里默默记下这个数字,然后迈步走了进去。 十七岁,新学期,新学校。 他在上一所学校只待了一个学期。原因很简单:太无聊了。 --- 开学第一天的课间,林凯坐在图书馆角落的一张圆桌旁,笔记本电脑打开着,屏幕上跳动的不是教材,而是一段密密麻麻的Swift代码。他把耳机塞进耳朵,音量调到刚好能屏蔽外界噪音的程度,开始调试一个已经折腾了三个星期的小程序。 那是他自己做的一款App,名字叫**Lunchbox**。 功能说起来很简单:扫描学校的午餐菜单二维码,App会根据你当天的课程表、运动量和个人口味,自动推荐最适合你的午餐搭配,还能帮你在十五分钟的课间窗口里规划好取餐路线,避开最拥挤的窗口。 林凯把最后一个bug压下去,点开真机调试,满意地看着界面流畅地跑起来。他顺手截了个图发到学校新生群里,附了一句话: > \"自制的,有需要的同学可以扫码下载,免费。\" 他以为只会有几个闲得没事的同学试着玩一玩。 他完全没想到,二十分钟后,图书馆门口开始排队。 --- \"你就是发那个App的人?\" 一个女生站在他桌子对面,手里攥着手机,屏幕朝他亮着——正是Lunchbox的下载页面。林凯摘下一边耳机,抬头看了看她。 扎着高马尾,一件宽松帽衫,五官清淡,但眼神沉静有力,带着一种不动声色的观察力,像是已经在心里把他判断了一遍,只是还没开口说结论。 \"对。\"林凯说。 \"这个推荐算法,你用的是什么模型?\" \"协同过滤加了一点规则引擎。\"他顿了顿,\"数据集是我从学校官网爬的,加上这两周在几个午餐评价论坛手动标注的。大概三千条样本,不多。\" 女生沉默了两秒。 \"你自己标注的?\" \"嗯。课上没什么事做。\" 她低下头,在随身带着的一叠便利贴上写了什么,撕下来折进口袋,然后不置可否地走开了。 林凯重新塞上耳机,继续盯着代码。 --- 到了午餐时间,他的手机震动得根本停不下来。 Lunchbox在短短一上午里积累了将近四百次下载——这个数字对一所中学来说,已经是相当夸张的传播速度。有人把截图发到了学校论坛,标题写着:**\"新来的转校生,一个人做了一个比学校官方App好用一百倍的东西。\"** 林凯拿着托盘在人群中穿行,试图找到一个安静的角落坐下来。但他发现这件事已经完全超出了他的控制——走廊里有人认出他,冲他举起手机挥了挥;食堂广播还在放歌,却已经有人在角落里窃窃私语,目光不时扫向他的方向。 他有点不自在。 这种感觉他不是没经历过。上一所学校,他因为用脚本刷破了学校图书馆借阅系统的一个权限漏洞(只是为了能提前预约热门书籍),被班主任找去谈了一次\"影响不好\"的话。 他找到一张靠窗的空桌,刚坐下,就看见三个人向他走来。 走在最前面的男生比他高出半个头,穿着一件合身衬衫,头发整齐,手臂交叉搭在胸前,表情算不上友好。他把手机往桌上一拍——屏幕上是Lunchbox的评论区,最新的一条评论下面,挂着一长串技术讨论。 \"你叫林凯?\" \"对。\" \"我叫杰克。\"他拉开椅子坐下,完全没有等林凯邀请的意思,\"学校Coding Club的部长。\"他顿了顿,\"你这个App,数据是从哪儿来的,你刚才在图书馆说的那些,是真的吗?\" 林凯挑了挑眉:\"你在图书馆?\" \"我在你旁边两排的位置。\"杰克说,\"你声音不小。\" 林凯想了想,把笔记本推过去,打开了项目文件夹。 \"代码都在这儿,你可以看。\" 杰克低头扫了一遍,神情有些微妙。他旁边两个人也凑过来看,其中一个压低声音说了句什么,另一个轻轻咳了一声。 \"这段推荐逻辑,\"杰克用手指点了点屏幕,\"有个地方会造成冷启动问题。新用户第一次使用的时候,推荐结果会退化成纯随机。\" \"我知道。\"林凯说,\"还没修,打算这周末加一个基于人口统计的兜底策略。\" 杰克沉默了片刻。 \"你转学过来多久了?\" \"今天是第一天。\" 又是一段沉默。 然后杰克站起来,把手机推回林凯面前。他没有再多说什么,转身对旁边的人说:\"走吧。\" 走出几步,他回过头,语气平淡得像在读一条系统消息: \"Coding Club今天下午四点,B栋207。如果你想来的话。\" 然后他就走了。 林凯看着他们离开的背影,低头看了看自己的午餐托盘。 今天Lunchbox给他推荐的是:烤鸡胸肉、凯撒沙拉、一杯橙汁。 还不错。 --- 下午最后一节课是物理,林凯坐在倒数第三排,把课本翻开压着,手机屏幕调到最低亮度,悄悄查看Lunchbox的崩溃日志。 有个边缘场景没覆盖到:当用户同时选了两种含花生的菜品时,过敏提醒会触发两次,弹窗叠在一起,UI乱掉了。 他在备忘录里记下来,顺手又记了一条:*冷启动兜底 / 人口统计 baseline。* 窗外,硅谷的阳光还是那么亮,像是永远不会暗下去。 操场上,有几个男生在踢足球,笑声隔着玻璃窗传进来,被物理老师讲解牛顿第三定律的声音轻轻淹没。 林凯盯着那行崩溃日志,嘴角微微动了一下。 新学校,第一天。 目前来看,还可以。 --- 放学后,他把双肩包往肩上一甩,出了教室,在走廊路口停了停。 左边是校门,右边是B栋。 他掏出手机看了看时间:三点五十二分。 他往右拐,走进了B栋的走廊。

第二章:黑客马拉松的邀请

# 第二章:黑客马拉松的邀请 B栋207的门虚掩着。 林凯在门口停了两秒,听见里面有人在争论什么,声音压得很低,却带着某种克制的火药味。他推开门走进去。 教室不大,前排摆着六张拼在一起的课桌,上面密密麻麻地摆着笔记本电脑、移动电源和各种线缆。墙上投影着一张架构图,几行字用红色马克笔圈出来,旁边打了好几个问号。 杰克站在投影旁边,手臂交叉,看到林凯进来,只是微微抬了抬下巴。 "来了。" 他旁边坐着四个人。林凯扫了一眼——其中两个是中午跟着杰克一起来的,还有一个戴眼镜的女生在低头敲代码,完全没抬头。 最后一个人,坐在最角落里,正把一张便利贴贴到白板上。 是那个图书馆的女生。 高马尾,同一件帽衫。 她感觉到林凯的目光,侧过脸看了他一眼,没说话,把便利贴贴稳,转回身去。 --- **内景:B栋207教室——下午,放学后** *(教室里,六个人围坐在拼起来的长桌前。投影上是一张黑客马拉松的报名简章,页面顶端印着:**"Bay Area High School HackFest · 第七届 · 赛期48小时"**。)* **杰克** *(点开PPT,语气平稳,像在做项目复盘)* 规则你们看一下。今年比赛在下个月第三周,周五下午六点开始,周日下午六点截止,全程四十八小时不间断。主题是"for campus"——面向校园场景的技术产品。评审是斯坦福两位教授加三个业内导师,今年还加了一个新规:作品必须在比赛结束前完成至少三十名真实用户的可用性测试。 **戴眼镜的女生(陈安妮)** *(头也不抬)* 三十个测试用户,四十八小时,还得写文档,还得做演示…… **杰克** 去年我们拿了第三。今年目标是第一。 *(短暂沉默)* **杰克** *(转向林凯)* 你的Lunchbox,今天下载量多少了? **林凯** *(坐下,把包放到椅背上)* 刚过七百。 *(几个人互相看了一眼)* **杰克** 七百,第一天,零推广。你的协同过滤冷启动问题怎么解决? **林凯** 人口统计兜底,加上新用户引导时做一个轻量偏好标注,五道选择题,三十秒以内。 **杰克** 上线时间? **林凯** 周六。 **杰克** *(点点头,像是在心里确认某个判断)* 好。今年我们想做一个面向全校的课业协作平台——选题、组队、进度追踪、截止日期提醒、资源共享,一套打通。你加进来,负责推荐模块。 *(林凯没有立刻回答)* **杰克** 怎么了? **林凯** 这个方向,去年第一名做的是什么? *(短暂停顿)* **杰克** ……课业管理工具。 **林凯** 今年主题一样。 **杰克** 我们的执行比他们强。 **林凯** 评审见过一次的东西,印象分会打折。 *(杰克的眉头微微皱了一下,但没有说话)* --- 角落里的女生这时候开了口。 她没有站起来,只是把那叠便利贴往桌上一放,声音不高,却很清楚: "他说得对。" 杰克转过头。 "苏雨晴。" "重复的选题不是不能做,但你得有差异化。" 苏雨晴站起来,走到白板前,拿起马克笔,在"课业协作平台"这几个字旁边画了一条斜线。 "我上周找了去年前三名的作品复盘报告看了一遍。" --- **内景:B栋207教室——连续** **苏雨晴** *(在白板上写下几个词:**"情绪"、"疲劳度"、"隐性需求"**)* 去年的工具都在解决"我要做什么"的问题。没有人在解决"我现在有没有状态做"的问题。课业压力最大的节点,不是你不知道deadline,而是你知道、但就是打不起精神动。 *(她停顿一下,看了看在场的人)* **苏雨晴(续)** 如果推荐模块能引入用户的状态感知——睡眠、上课时长、近期测验分数、甚至今天打开App的时间段——给出的不只是"你要做什么",而是"你现在适合做什么"……这个才有意思。 *(短暂的安静)* **陈安妮** *(终于抬起头)* 状态感知的数据从哪儿来?总不能让用户每天填问卷吧。 **苏雨晴** 手机自带的健康数据API,睡眠和步数都有。加上App内的行为日志——开了多少次又关掉的,完成率,做题间隔时长——被动采集,用户无感知。 **陈安妮** 隐私协议…… **苏雨晴** 本地计算,不上传,用户随时可以关。 *(陈安妮若有所思地低下头,重新开始敲键盘)* **杰克** *(看着白板,沉默片刻)* 这个想法是你什么时候想到的? **苏雨晴** 今天中午。 *(杰克看了她一眼,没有接话)* --- 林凯一直在听,没有打断。 等苏雨晴说完,他才开口: "状态感知这个思路,算法上可以做。但有一个问题——" 苏雨晴转过头,眼神里有一点等待。 "用户状态是动态的,模型需要反馈信号来校准。你怎么设计这个闭环?" 苏雨晴没有立刻回答。 她想了大概三秒,然后拿起马克笔,在白板上写了两个字: ***任务完成。*** "最简单的反馈信号。用户完成了推荐给他的任务——不管是主动标记还是系统检测到——就是一次正向反馈。没完成,推后再推,或者换一个更轻量的任务替代。" "这个完成率,"林凯说,"会有很强的时间偏差。晚上十一点完成一道题,和下午三点完成一道题,权重能一样吗?" "当然不一样。"苏雨晴说,"所以要带时间戳。" "那模型的训练周期怎么定?数据量不够的时候怎么冷启动?" "你刚才不是说了吗,"苏雨晴语气淡然,"人口统计加轻量偏好标注,三十秒,五道题。" 林凯停了一下。 她在用他自己说过的话怼他。 他有点想笑,但忍住了。 --- **内景:B栋207教室——稍后** *(杰克把架构图重新拉出来,红色圈注的问题部分已经被人用橡皮擦掉了一半。)* **杰克** *(看着林凯)* 你怎么看?加不加? **林凯** *(顿了顿)* 方向可以。但我有一个条件。 **杰克** 说。 **林凯** 推荐模块的技术方案我来定。不投票,不讨论,出了问题我负责。 *(杰克眯了眯眼)* **杰克** Coding Club是集体决策。 **林凯** 我不是Coding Club的人。我是你们今天邀请进来的。 *(又是一段沉默。杰克和林凯对视了几秒)* **杰克** *(慢慢开口)* ……可以。推荐模块,你说了算。其他模块,集体过。 **林凯** 行。 *(他拉开椅子,把笔记本放到桌上)* **林凯(续)** 那我们从数据结构开始讨论。 --- 会开到将近六点。 临散场的时候,苏雨晴把白板上的便利贴收了下来,叠整齐放进一个透明文件夹。林凯收拾着电脑,侧眼看见她在便利贴背面用细字记号笔写了一排数字——看起来像是某种分层标注体系的初稿。 他想了想,开口: "你不是Coding Club的人吧?" 苏雨晴把文件夹装进包里,没有回头: "观察很准。" "那你今天为什么在这儿?" 她拉上包的拉链,站起来,终于转过脸来看他。 "因为我也想赢。" 她走到门口,停了一下,没有回头: "你那个Lunchbox,花生过敏那个bug,记得改。我试了一下,弹窗叠了三层。" 然后门关上了。 林凯看着那扇门,低头看了看自己的备忘录: *冷启动兜底 / 人口统计 baseline。* *花生过敏 UI bug——弹窗去重。* 他在第二条下面,顿了顿,加了一行: *苏雨晴。状态感知。闭环设计。* 窗外的硅谷天色开始暗下去,但那种亮度还是在的,像某种不肯轻易收场的东西,留在玻璃上,留在屏幕的反光里。 林凯关上笔记本,把包背上,走出了B栋。 今晚有两件事要做: 修那个弹窗bug。 还有,想清楚状态感知的模型架构。 顺序无所谓,反正都得做。

第三章:硅谷爸爸的阴影

第四章:崩溃的版本

第五章:48小时极限

第六章:舞台之外的告白

第七章:创业还是高考

第八章:下一个版本的我