2025-12-13 18:00:00
“根据国家天文台的预报,一年一度的双子座流星雨将于12月14日下午迎来极大,流星雨爱好者可于13日夜晚至14日凌晨和14日夜晚进行观测……”关掉网页,我打开已经沉寂好久的投影仪,终于在今天凌晨看了一部记着好久的电影,《追幸福的人》。
事实上仅是因为惘闻乐队为这部电影改了一首距今20年的曲子,便一直心心念念。
回想今年,我的生活间歇性有了一些不同。在一月份,我第一次一个人出国旅游,回想起那段时间,总是最先想到一个骤雨初歇的傍晚,我在酒店楼下等 grab 送餐,他告诉我没有零钱的时候,我摆摆手:“it’s ok.” 回到不开灯的房间,窗户上爬满了雨滴,远处的118塔在镜头下失焦,变成一个轮廓而已。

过完年,我又有了难以抑制想要出去玩的冲动,最终只是驱车一个多小时,一个人去看了南天湖的残雪。

间歇性活出了不同以往之后,回到上班的状态。今年好像比去年更忙,更累。每次走近人脸识别闸机,难免不愿去面对这个事实。我的黑眼圈更重,眼角的皱纹越来越清晰,皮肤也有了苍老的迹象。而今天,我又要老去一岁了,我不再像17岁的时候一样渴望生日到来,渴望长大,渴望成为幸福的人。只是越来越深刻地体会到了那句话的无奈:变老就像身负非我所为之沉重。
时间日复一日,工作日复一日,生活日复一日。那时候我常常想,我平淡如水的生活大概都是因过往的一切而接受的惩罚吧。
七月下旬,忙完一些事情后,我又背着包开始了新的旅程。贵州,广西,广东,香港……除了和家人汇合之外,我每天都在奔走,想把这个世界更多的美好装进回忆里。
可是站在小学课本上的黄果树瀑布下,站在书本上的象鼻山对岸,泛舟风光如画的漓江上,站在紫霞湾等待日落的海滩,站在灯光璀璨的广州塔下,站在清风吹袭的维多利亚港,直到一张机票从深圳回到重庆,回到呆了八九年的小县城,回到夜色黯淡,冷冷清清的家里时,我才发现我只是路过了这些美好,像一个过客一样,目睹着幸福在身边的人那里逐一上演,而我始终只是一个坐在大荧幕之外的观众。
《一一》里说,电影被发明以后,人类的生命延长了三倍。我看着墙上映出的场景,看着电影里的巧巧逐渐失去自己的梦想,失去自由,失去亲人,失去朋友,看她在大货车上丢掉燃尽的仙女棒,长镜头拉近,《My Crime 2020》越发清晰,她对未来依然是没有信心的吧。

从电影中逃离出来,那种沉重的无奈渐渐淡去,但醒来的时候又不得不裹紧衣服,去面对日益寒冷的空气。回想今年,贺某的孩子可以吃饭了,梁教授也开始带娃,杨傻也在周三结了婚,我认识的人都在长大,踏入了他们人生的正轨。他们对未来可以有好多期望,而我在每次下班回家,打开房门的那一刻,就已经什么都不期待了。
写到这里,我又突然没有了想要在今夜去南天湖看流星雨的冲动,那些美好的东西于我而言终究只是路过。且不说流星划过的短暂,如果对着流星许愿真的有用,那成百上千次的祷告,重蹈覆辙的追逐,又算什么呢?
世事本就是无常。
2025-12-07 12:30:00
在《我在用什么浏览器翻译插件?》这篇博文里我提到过我对浏览器翻译插件的体验和需求,那时候用了一阵子的 trancy,后来不知何时就弃用了,当时我就提到过,这不是我理想中的翻译插件(个人主观原因)。
在简单导航(simpleNav)基本不必再改动之后,我又萌生了改一个停更开源翻译插件的想法,虽然很早之前就有过,但 codebbudy 没能给我足够的信心。现在换上了 trae solo,我觉得效率上起码要高出不少。
停更许久的翻译插件大多是翻译接口失效或者不好用,看起来只需要替换接口就可以,所以我想找的是轻量,且使用体验比较适合我的项目。对比了一下轻氧翻译和侧边翻译,我最终选择了后者。
侧边翻译是我曾使用过很长一段时间的翻译插件,可惜已经停更很久了。加上现在各大翻译插件都有 AI 模型的加持,传统的机翻很难满足要求。
为了避免误导其他人,所以在遵循原项目的开源协议前提下,把这个新项目命名为“轻量翻译”,英文名:lightrans。
既然不要机翻,又要考虑到公开给大众使用,就不能有高昂的开支,所以我首先想到的是用智谱清言的官方 api 调用 GLM 4.5-Flash,但是并发数限制得非常低,加上翻译速度没有达到我期望的即点即译,于是作罢。
好在我又体验了一下 trancy,发现 trancy 也没有免费提供 GLM 模型,而是改成了硅基流动。于是我注册了硅基流动的账号,发现居然有免费的模型可以使用!硅基流动真是带善人!

首先体验的是 deepseek 的一个模型,翻译速度也很慢(我猜测是因为有推理思考过程),在网上多方了解,发现Hunyuan-MT-7B倒是一个不错的专为翻译而生的小模型,腾讯混元官方的 api 依然是收费的,还好硅基流动限免提供使用。最后我选择了三个体量都不大的小模型:Hunyuan-MT-7B、Qwen2.5-7B-Instruct和GLM-4-9b-chat。
这三个模型除了混元比较新之外,另外两个都算比较老的模型了,没办法,不花钱嘛,况且效果也不是不好。
根据我的用量级别,我使用这几个模型的速率限制为:1000 RPM 和 80000 TPM。即每分钟请求数1000,每分钟处理 token 数80000。
侧边翻译不是个人开发者的作品,应该类似于一些较大的开源项目组织维护,所以侧边翻译里有非常丰富和强大的功能及代码。考虑到我只需要接入一个翻译接口,于是必应、谷歌和百度等翻译接口都删掉了。
初次以外还删掉了分析代码、隐私政策、部分设置项和个别国家的本土化适配等等,源代码从14MB缩减到4.5MB。
由于我选择的三个模型都是对话模型,所以请求的 api 地址一样,于是我只创建了一个 aitrans 的翻译器,方便测试就在代码里明文写了我的私钥,经过测试,对话框(popup)翻译正常,划词翻译正常,但是网页翻译不正常。
原本的侧边翻译的对话框默认是搜索的,输入文本点击翻译后即会在侧边栏显示翻译结果,但是测试了一下目前的翻译接口都已经失效了。为了获得输入和获取结果的一致性,即当前对话框不会被打断关闭而显示另一个对话框,我改了 popup 的样式,并使它能够直接在当前窗口显示结果。


除了对话框以外,侧栏显示翻译也会让人的视线离开当前关注的区域,所以我把划词翻译的结果也以浮动的卡片形式显示在了当前位置,并且和原来一样支持拖动。以下是划词翻译中三个不同模型结果的对比(发音按钮点击无效,功能删了但是还没删按钮):



当然,用不着的设置项也可以删掉,因为我的需求没有那么丰富(不然就用 trancy了),为了追求极简但好用,所以砍掉了许多原本有的功能,也为后面的修改和维护减轻一点负担。


看起来基本可以正常使用了,但是网页全文翻译依然不行。原项目使用的是谷歌和有道,但是有道已经下线了,谷歌在国内也无法直接访问,看来要支持网页翻译需要改动的还挺多。
中间的过程就不再赘述了,除了新增代码,调试代码之外,还要测试不同的请求频次和字符数,以免触发硅基流动限频的策略。

一开始选中模型进行网页翻译,往往要过十来秒钟页面才会有变化。或许是内容太多了模型处理也要时间吧,于是我设定了分批次提交,最高并发三个,最多重试三次。所以在进行网页翻译的时候可以看到内容是一部分一部分出来的,但是间隔不算大(主要是网页本身的菜单栏花的时间多,正文其实很快)。这样用户能感知到翻译已经开始了,而不是像之前一样等待了十来秒都没反应,于是不断尝试,就更容易触发限频。

从翻译结果来看,不知道为什么千问模型会漏掉几个词语不翻译,也可能是我的代码有问题,相比之下,混元模型翻译得还不错,有些专有名词甚至会加括号解释说明。比如昨天在新华网英文站翻译页面时,发现它会解释“GuoChao”这一个词汇,但是我没找到那篇新闻,只能找另一个,没想到也复现了。

这是更完整的页面翻译。

通过这次改写这个开源项目,我才发现原来微软的机翻 api 也是要钱的,那么多较大的翻译插件都把谷歌和微软翻译免费使用,甚至开放一些 AI 模型翻译免费使用,这样看起来他们真的是在为爱发电了。
而我能轻松改写这个项目,要感谢侧边翻译的开发者们的开源,也要感谢 trae solo 的帮助。考虑到我的 api 限频问题,所以暂时没想过上架应用商店,但是如果愿意体验并且给我提出意见的话,也欢迎下载扩展包尝试一下。
项目地址:hin/Lightrans · CNB
2025-11-16 11:00:00
“不是吧,难道今天还要新娘子等你?”
老梁猛地推开门,吓得他从床上惊坐起来,窗外的天边隐约有些血色,他看了一眼手机,才六点半。
拔掉充电器,充电线拽掉了床头柜上盛开的玫瑰花瓣。
他匆忙穿好了西装,老梁帮他打上领结,叮嘱道:“一会娶亲他们肯定会刁难你,哥们给你撑着,你抱起新娘子就跑!”
他暼了一眼墙上的婚纱照,背景璀璨的银河,当初她坚持要把圣安德烈教堂背景换成这个。想到这里,他嘴角上扬。
他不知道,有人盯着大屏留意着他的一举一动,正用电话向另一个人报告:“师父,ED3580出故障了。”
迎亲的过程意外顺利,新娘子穿着喜庆的嫁衣坐在婚房床上,房间空无他人。他想要揭开他的红盖头,却被她用手拦下。他顺势握住她纤细白皙的手,轻轻往她的手背一吻,然后郑重地说:“我来娶你了。”
礼堂里早已坐满了人,老梁也穿得很正式,手握话筒,声音洪亮,抑扬顿挫地说:“有请——新娘!”
音响师立马切换了音乐,是理查德的《梦中的婚礼》。随着大门打开,一束光照在门口,新娘穿着洁白的婚纱缓缓迈进,他迎上前去,脑海里嘀咕——是她?
新娘挽着她的手臂和他一起缓缓走上舞台,除了音乐,四周一片寂静。他想起他们刚恋爱的时候,她第一次去他家,在地下车库也是这样挽着他的手,蹦蹦跳跳地说:回家咯,回家咯~
那时候他刚结束和老梁的合租生活,搬进自己新家不久,新家比出租屋更大更敞亮,有更智能化的家电,他也终于有了心上人。他们一起窝在沙发上看电影,那时候他强烈给她推荐大卫林奇的《穆赫兰道》,那是他搬进新家一个人看的第一部电影。当时他深深被林奇表现梦境的技艺折服,那些光怪陆离的梦在他的镜头下,真实,又令人难以直视。
站在舞台上,他谨慎地扫视台下的来宾,但是光线太亮,他看不清究竟来了哪些人。给她戴上婚戒以后,他凝视着那双泪汪汪的眼睛,声音哽咽起来:“其实……我在梦中和幻想里排练过无数次这个场景……我有好多话想跟你说,想真诚地谢谢你,谢谢你来……爱我!”他说不出话了。在老梁这个主持的怂恿下,这对新人紧紧地拥抱在一起。
“可是,我今天忘了……”他倔强地抬起头,注视着她,眼神里满是这些年一个人熬过来的沉默和委屈。
婚礼结束,他们牵着手推开那扇门,走进了他们的婚房。房间有些昏暗,他开了灯,橘黄色的光铺满了屋子,斑驳的墙上挂着他们的婚纱照,背景是深邃的宇宙银河。她问他:“你怎么不让小爱开灯了?以前连拉窗帘你都只动动嘴。”
他坐在床沿,老式的木床发出吱呀的声响,床上并没有喜庆的婚被,只铺着一张潮湿的棕垫,只摆放了一个枕头。
“师父,他可能要发现了!”
白大褂按下暂停键,眉头紧锁地盯着屏幕,然后转过身冲身边的人发火:“你们怎么搞的!婚房能用以前租住的房子吗?”
旁边的人低头狡辩:“可是以往我们都是这样设置的随机参数啊……”
白大褂气愤地拍桌:“我叫你续梦,那你就应该谨慎点!想个办法让他无暇顾及这些不合理!”
他把新娘揽入怀中,正准备亲吻她的时候,耳边传来陈奕迅的歌声“何以我来回巡逻遍,仍然和你擦肩……”他从床上惊坐起来,关掉闹钟,看着手机屏幕上的“六点半”,无奈地摇了摇头:又要去上班了。他没注意到,床头的玫瑰也枯萎了。
刷牙时,他偶然抬头,镜子里的他动作总是要慢一步,甚至还带着拖影,他愣住了,大脑飞速运转——结婚,对!梦到结婚了!可是镜子……还没来得及多想,他又走进了空无一人的办公室,坐下,叹气。桌子上的报纸显示时间是2020年,文字有些扭曲,隐约可以辨认出来写着“特朗普拉票现场遭枪击”,配图是特朗普在特勤局的护卫下离开时,举着拳头无声喊“fight”的那张照片,特朗普肯定又要连任了!
“把随机参数调小一点,2024年的新闻怎么放到2020年的报纸上去了!”白大褂命令旁边的人。
那人有些担忧:“如果太真实,等他醒来后会不会找不到现实和梦的边界?”
“无所谓,他们不就老爱说‘人生不过大梦一场’吗,现在真醒着做梦,有意思。”白大褂继续吩咐,“查查是什么原因导致的!”
过了好一会,那人报告:“系统串联多维时空时失误,他误入了我们设置的边界,在事件视界中迷失了。”
“没事,把他偶然看见的场景混淆成既视感,即使他以后想起来也不会再觉得惊讶。”
“那这段婚姻……”
“你觉得惋惜?”白大褂问。
那人点点头。
“等你造的梦足够多的时候,你就能释然。人类本身就有很多无法掌控的意外发生,现实和梦,到底哪个才是真的,有那么重要吗?你以为从梦中醒来,又怎么不是进入下一场梦境呢?”
2025-11-14 22:30:00
在此之前,我用过好几年的 weTab 插件,自定义程度很高,小组件也很丰富。这几年,我见证了 weTab 从一个简单的导航页渐渐做大做强,而我的首页超链接这几年几乎都没怎么变过,这也足以说明导航页对我而言并非刚需,也确实大多数时候我访问网站都是依赖浏览器的自动补全。话虽如此,在 weTab 每次打开浏览器就开始同步导致我的老电脑要卡死好一会开始,我就决心自己做个导航页了。

说干就干!今年七月份我在 github 上传了第一个版本——当然,是由 AI 写的。一开始想做成一个动态页面,但又不愿折腾数据库,所以干脆把我常用的链接写死成了一个完全的静态页面,仅仅壁纸由必应日图的 api 负责每天更换。

上周,我和 inkss 说了我的计划,想找一个好用又好看的开源项目改一改部署在 edgeone pages,他也有些兴致,但是我们都没有找到更好的方案。于是我提到七月份写的那个导航页项目,在他有事搁浅了之后,我每天抽闲暇时间用 AI 继续改写,本文就简要记述一下这一件事。
由于我的编程经验并不丰富,加上 VS code 上只有一个 codebuddy 插件,所以一开始的任务都是交给它的。需求是:把这个纯静态页改成 next.js 项目,使用 onedrive 登陆和同步数据,以便后续直接在前端管理,也无需后台和数据库。
codebuddy 很快就完成了项目重构,并且根据代码和实现功能写了第一版 README,网页可以正常跑起来了,但我没想到需要折腾修改的大量工作还在后面。

一开始在本地开发,测试没有发现什么问题。推送到 github 由 EO pages 拉取部署,我也在 EO 添加了对应的环境变量,而遇到的问题包括但不限于(npm run dev 和 npm run build 居然有这么大的差别):
① TypeScript编译错误,代码中尝试直接展开(...)一个 Set 集合,但当前的TypeScript编译配置不支持这种操作;
解决方式:将编译目标设置为支持ES2015(即ES6)及以上的环境。
② Next.js 应用路由没有正确设置成动态,Next.js 14 默认会尝试静态化所有路由,包括 API 路由,这就导致无法正常登陆 onedrive 服务;
解决方式:在必要的 api 路由中添加代码强制动态渲染。
export const dynamic = 'force-dynamic'; |
③ 开发环境和生产环境混淆,在开发环境中使用的回调地址是 localhost,在生产环境中依然如此而不是我的域名;
解决方案:使用环境变量动态设置重定向 URI。
④ 登陆失败,在前端使用微软账户登陆,跳转回来后页面依然是未登陆状态。
解决方式:让 AI 在多个断点打 log,当然 codebuddy 也自作聪明地写了两个 debug 页面,以便输出更多调试信息。

但也正是因为这个调试信息,我发现 requestURL 依然是 localhost 而不是我当前使用的域名,于是围绕这个问题我和 codebuddy 改了多次。由于本地环境测试没有任何问题,所以我一度怀疑是 EO pages 的策略有问题。
腾讯云技术排查后,告诉我应该还是代码的问题,云平台是没问题的。我仔细查看更详细的 debug 页面内容和网络请求,发现登陆后确实正确回传了认证信息,而网页没有能够获取到这一点。
继续和 Codebuddy 多次斡旋,最后我终于忍受不了它时不时显示“模型参数错误”这类的提醒,修改代码时陷入死循环,决定再换回 trae 试试。
trae 是字节跳动开发的一款 IDE,上一次用还是七月份,彼时的豆包大模型常常给我的代码重复写几千行相同的内容,我就卸载了它。
再次换回 trae,居然发现它比 codebuddy 好用太多,它好像更能理解我的表述,分析代码的逻辑性也更强,修改一处代码后也会记得同时修改受到影响的其它模块。一开始它在修改代码后会在本地启用 npm run dev,但是它会开多个终端,然后发现端口一直被占用,后来就不用开发模式,而是直接在本地构建 npm run build,终端有报错的话它还会再次修改代码。

在 trae 的帮助下,我不断修复遇到的各种 bug ——用 AI 写代码就会面临这样的问题,要多次调试和修复。我的 github 仓库里最近的提交几乎全是修复 bug 的。
用 trae 后,这个导航页终于基本可以正常使用了。



说起来是“简单”导航,但是我挺想实现还未实现的功能又挺复杂,比如在首页增加天气、热搜和电影推荐小组件,也想像 weTab 那样可以整一个在线的 TODO 小组件之类的玩意。但是我时间有限,尤其是最近超级忙,所以只能往后面再拖延了。
项目地址:W4J1e/SimpleNav: 这是一个简洁的自用导航页。
体验地址:SimpleNav
目前支持大多数无服务平台的部署,可以 folk 我的仓库,连接到 vercel 或者 EO pages 之类的平台,选择 nextJS 项目进行部署。
需要配置以下环境变量:
AZURE_CLIENT_ID=your_azure_client_id |
详情可以参考部署文档。
AI 编程的兴起,让我这种基本不会编程的人也可以更高效地完成一些小打小闹的项目,这真是个伟大的时代!但是这个过程中我每一次都更清晰地意识到,打铁还需自身硬,如果完全依赖 AI 去修复 bug,自己没有技术实力,会走很多弯路。
2025-11-01 17:10:00

第一次在 DVD 听到胡彦斌的《红颜》这首歌时,只有一个想法:惊为天人。距今已过去21年,距离上一次混进移通学院看胡彦斌的现场也逾十年,彼时他刚参加完《我是歌手》,凭借一曲《山丘》多少摆脱了“歌红人不红”的尴尬局面。去年他来重庆开演唱会,我因为有事没能去成。今年成都场巡演开票,我第一时间抢了一张内场票——后来发现,他的演唱会门票并不用掐点抢。
10月25日,我乘动车赶到成都,在酒店充好了电便去了演出场馆。此前,群里有许多粉丝都在分享他们做的物料以及同步一些资讯。可能我算不上狂热的粉丝,所以仅仅带了手机和身份证就去了场馆。

难怪听众们喜欢喊“倒闭”,大麦开的票确实不太行。加上主办方在内场一排安排的座椅过多,我坐在偏边上的位置,又挤得不行,那一瞬间挺羡慕楼上看台的观众,视野要好得多。

到达开演时间,随着暖场音乐的响起,观众们翘首以盼的主角终于登场。时间过去一周了,我已记不得第一首歌是什么,但是整场演出有明显精心的编排,从古典到现代,再到古典,无论是背景还是灯光,演唱会确实比一般的 livehouse 效果强了不少。

很快,那首《红颜》再度登场,编曲上有一些变化。有一位老生,还有一位拉二胡的老师,在后来的某首歌曲中,还融入了唢呐!好像就是《我是歌手》舞台上,有一次张靓颖身着白裙登场,其他人的关注点都在装扮上,胡彦斌却说“一把二胡,一个唢呐”。估计这一次经历给他的灵感经久不衰,他早期中国风的歌曲编曲中融合了这两种传统乐器后,确实给人不一样的感觉。当时的感受不亚于我在摇滚乐队的演出现场听到小号的声音。

转场视频结束后,屏幕上打出《月光》二字,观众们又欢呼起来。可能很多人都是因为《秦时明月》听到的这首歌,我没看过这部动画,只记得上初中那会的某个晚上在MP3 里听到这首歌,三个字十八个弯,原来歌还能这么唱!那段时间天天循环这首歌。后来越来越多的自媒体都质疑胡彦斌现在的年纪还能不能唱得了这首歌,他在微博上回应的时候我都没想到他居然对这种言论会这么较真。在现场听了这首歌之后,更加相信他当时说的“以前能唱,现在也能唱”。

观众们的热情比我高得多。右手边的小妹妹每次呐喊,欢呼,而一开始我最多只是挥挥荧光棒,i 人 i 得连声音都不敢发出一点。后来简短的互动中,胡彦斌问大家的愿望是什么,小妹妹脱口而出“考上高中”,我和她右边的男生都不约而同诧异地望向她,得知她居然才上初三!

初三,大约15岁,也就是10后。但是她会唱的歌比我多太多,让我这个“二十年老粉”有些惭愧。
演出到两个小时的时候,胡彦斌告别,虽然售票时的说明就是演出大约两小时,但现场没一人离开,场馆也没开灯,可能大家对于这个环节都很有默契了。观众们一遍遍喊“胡彦斌”,乐队也开始回应,过了好一会,胡彦斌果然又登场了。在后面的一个小时“加班”里,他清唱了一些早期的歌,比如《小狗》,也有一些后来的音乐比如《宝藏男友》,甚至又一次唱了《山丘》!当时我说他上一次唱这首歌都是十年前的事了,旁边的小妹妹表现得很惊讶——那个时候她才五岁。想想就很奇妙。

最后一个小时更像是一次集体蹦迪,虽然随性一些,但是现场的氛围确实很棒。由于内场很挤,所以我没有像他们一样站起来,靠在椅子上闭目倾听,也是一种别样的体验。

差不多十点钟,人们陆陆续续离开场馆时,我这样的 i 人居然跟她搭话:“那就祝你考上想去的高中哟!”,她转过头来甜甜一笑:“谢谢。”
回来整理当时拍的照片和录的视频时,又很强烈地感受到,确实有些音乐,用再好的 CD 听也没有现场那么令人感动。
2025-10-03 00:07:00
“许幼走了,你听说了吗?”
屏幕亮起时,我猛然踩下刹车,刚刚启动的车又被重重拉扯在原地。
“怎么了?”我呼吸急促,手指颤抖着打下这三个字。
“听说婚姻不幸,跳楼了。”
发动机还在低鸣,我把车熄了火,愣愣地盯着中央后视镜上挂着的照片。那时她依然扎着马尾,冲着镜头微笑。
许幼。
“许幼,你报了哪个学校?”我终于鼓起勇气拍拍她的肩,胆怯地问出这句话。
她转过身,头发掠过我的肩膀,脸上绽放出明媚的笑容:“西大的计算机系,你呢,羊?”
“你怎么报了计算机系?”我几乎是脱口而出。
她歪头看我,睫毛在阳光下显得更加好看,那双眼睛太清澈,像盛着我整个青春的阳光。她说:“听说你打算报西大的计算机呀。”
迎着她的目光,我突然慌了,心脏快速捶打着我的胸腔。一刹那,有无数的念头闪过我的脑海,我静默着把她这句话的意思演算了千万遍,如此明显,却又不敢承认,她——是想和我在一起吗?
“你怎么看起来还是呆呆的!你呢,也是西大吗?”
听了我的回答,她一整个暑假都没有理我。高考结束的第二天,经过自己估分,我明白自己与西大已经无缘了。当我收到一所二本学校寄来的通知书时,那种强烈的失落感就越来越沉重,笼罩着我,压迫着我。虽然我们彼此之间并没有真正表白,但那句话依然像一把重锤一样时时敲打着我,告诫我,我高中时代暗恋了三年的许幼,最终要和我错过,而我再也没有机会去弥补这个遗憾。
军训结束那天是中秋,我在宿舍睡到九点,手机震了震。许幼的消息跳出来:“中秋节快乐!”
手指悬在屏幕上,我甚至想过这是不是群发。但心跳愈发厉害,我买好票就冲向车站。傍晚的西大教学楼前,桂花落了一地,我捧着花站在桂花树下,她跑过来时,风里都是甜的。
她扑进我怀里,那捧向日葵被挤得簌簌掉瓣,我扔下花,也紧紧抱住了她。
“喂!你怎么比高中更黑了?”
“你是不是军训都在偷懒?” 我捏了捏她的脸,她的皮肤还是像高中时一样,白里透红。
“才没有!我有防晒(霜)好不好!”她放下筷子,擦擦嘴,双手撑着下巴盯着我,两个浅浅的酒窝经久不消,我突然有一种恍如隔世的错觉。
“喂,那你今天怎么回去?”
我心里咯噔一下,慌乱地丢下筷子。还好抢到了晚上的票,只是到站后肯定不能回宿舍了。可是那又怎样呢?
吃完饭,我们牵着手往高铁站慢慢走去,二十分钟的路,走了一个多小时。那是我第一次和许幼约会,浅浅的晚风吹拂着橘黄路灯下的我们,时不时有车疾驰而过,我侧头看着她,只想和她这样慢慢地走下去,走一辈子。
但是一年的时间,我们的感情就出现了裂痕。我举着手机冲她大吼:“你以为只有你一个人觉得异地恋辛苦吗,我不辛苦?过不下去就不过了!”
电话那头传来她的哭声,混合着她小声的道歉,我却把手机丢在一旁,心烦意乱地点开了游戏。
从那以后,我们再也没有联系。
再听到她的消息,是毕业两年后。听高中同学说,许幼要结婚了,男方很优秀。我把手机丢在一旁,盯着车上挂着的她的照片,突然又开始懊悔那晚匆忙的诀别。
我重新将车启动,车载收音机里传来一则讯息:“今日凌晨五时许,寻柳佳园一女子从32楼跃下,急救中心接报赶到现场时,该名女子已无生命体征。据警方透露,死者疑似因家庭矛盾导致压力过大……”
2025 年 10 月 02 日。双节的高速路上车水马龙,我却觉得整个世界都空了。许幼,我的许幼,我曾经没有好好珍惜的许幼,就这样离开了。
晚上,电脑桌面一封邮件弹了出来,发件人未知,标题是“你也和我一样遗憾吗”,正文只有一行:
时间是有迹可循的。以你此刻为原点 A (0,0),总能找到来时的路。
附件是个代码包,编译运行后,终端让我输入想要回去的时间,我想了想,在键盘上写下:2020 年 10 月 02 日。
程序报错:only Unix timestamp accepted。
我把时间转换成时间戳,在终端输入1601568000,按下回车,瞬间眼前一黑。
再睁眼时,手机显示 2020 年 10 月 02 日 00:03。微信里,争吵的记录停留在昨天,我最后发的 “晚安” 无人问津,她没回。离那场毁灭一切的电话,还有 20 个小时。来得及!
“宝宝,你怎么瘦了!”
我抱着花出现在她面前,她看到我之后转身就走。我冲上去抱住她,把头埋在她带有花香的头发里,一直跟她道歉。她挣脱,转过身给了我一拳:“讨厌你!”说罢又用力抱住了我。
……
2025 年 10 月 02 日,我的车停在高速服务区,广播里又传来那段播报:“今日凌晨五时许,寻柳佳园一女子从32楼跃下,急救中心接报赶到现场时,该名女子已无生命体征。据警方透露,死者疑似因家庭矛盾导致压力过大……”
我凝视着车上挂着的我俩的合照,副驾驶座椅上还放着两张离婚协议和一本鲜红的结婚证:
持证人:羊 ,登记日期:2023年9月15日,旁边贴着我们在民政局拍的合照。