Part 0. Prologue 引言
回望2025年,我感觉我走过的路很曲折,但每一天我都在感受到实实在在的进步。在这一年,我遇到了很多支持我的朋友,无论是线上还是线下见到的,他/她们的支持给了我最大的动力,让我能够一直在自己的路上坚持下来。回望2024年充满遗憾的新年,那回到家以后彻夜难眠的夜晚和流下的后悔莫及的泪水,从那个时候开始,我在内心深处就埋下了一个想重回以前的种子,直到现在,这个种子虽然没能完全开花结果,但是我想我已经做到了自己的最好。总结来说,2025年这一年可以用下面几点来总结 —— 从混沌到有序、从失落到自信、从被动到主动、从追悔到充实。这一切的一切,虽然说路上有很多其他人的帮助,但最大的推手还是自己,如果不是一直坚持努力的自己,我也许今年还会继续抱有遗憾吧...
Part 1. 从混沌到有序 —— 学习和生活秩序的重构
1.1 学习生活的有序化 —— 本科毕业与研究生身份转变
我甚至根本不敢相信我能做到这一切,简直太不可思议了!对我来说简直是一个奇迹!
在2024年的下半年,我的学习生活很混乱,当时有一连串不好的事情,它们引起了连锁反应,极大打击了我的自信心和在大四的科研动力。那段时间虽然不需要上课(因为专选课程修完了),我一直都觉得“我是不是没什么用...”,或者“唉..我好菜呀...”这样的事情,而且这种情绪持续了至少两个多月,最后我迫于自己的压力选择在寒假前请假20多天提前回家调整情绪,虽然听起来不太正常,但是这对当时的我来说,已经是我能做出的最理性的决定了。
2025年,一切都是新的开始。我的毕业设计也在寒假期间完成了开题报告,在寒假期间有父母的帮助,我的心结也解开了一大半,我开学的时候,一切都有序进行着,我的毕设项目实验也开始稳步进行。在这期间也和实验室的师兄师姐交流了很多经验(这里因为文档对所有人公开就不报菜名啦,其实我对实验室里的每个人都有印象哦~),从他/她们身上也看到了那种积极向上的态度,以及能把科研工作常态化的定力和能做好它们的自信。它们的积极向上是鼓励我完成科研的一大原因之一。与此同时,我觉得更重要的是另一个在osu!游戏认识的人给了我很大的动力和信心( 他会是谁呢?好难猜呀...后面第二部分再揭晓吧 !)总之,我在4月份就基本上完成了毕设相关的研究,并在5月份顺利完成了答辩。虽然不能算作是优秀,但对于我这种对科研没什么经验的人来说,无疑已经是一个很好的结果了。
在下半年,我开始了我的研究生生活,我觉得无论是导师还是师兄师姐,对我都特别照顾,导师了解我在未来就业上可能会遇到的困难,所以为我找到了一个去货拉拉实习的项目,这个项目早到从5月初完成答辩开始,晚到在今年年底才正式结项。这是我接触到的第一个和学校和企业深度合作的技术开发项目,经历了无数个日夜,在开学之后,也曾几次在凌晨两点多还和一起做项目的师兄驻足实验室不回宿舍,在飞书上的1000多条消息和几百个文件互传,是我和师兄不懈的坚守和追求。不管如何,目前项目工作已经接近尾声了,回过头来看整个项目的过程。在这个过程中有很多令人欢喜的瞬间,也因为准确率和召回率的指标上不去一直加班过,但在这个过程中真的收获到了很多东西,并把这些东西真正内化为自己的能力。记得一开始做这个项目的时候我是很抵触的(可能是因为正好是寒假吧,当时在玩osu!以及还有一些其他的事情做(比如学车,以及看研究生自救指南等等)),但是随着做项目逐渐深入,我也开始逐渐适应它,并且理解了那份要把它做好的责任。在这个过程中,我学会了很多东西,比如说对linux终端的操作越来越熟练,知道了很多快捷键操作,为了测试功能也写了很多不同的python代码(功能包括但不限于文件格式转换、数据集构建、特征及模型输出分析等),在这个过程中,我通过公司的AI接口让自己写代码的过程更加高效,但不代表AI生成的代码就一定能满足需求。有的时候确实会发生一些不能避免的错误,在解决各种错误的过程中,我的代码调试能力也在进一步提升。
1.2 学习之余 —— 生活作息方式的转变
从我成为研究生开始,我应该不会特别频繁熬夜了吧...
在本科阶段,特别是2025年上半年的时候,特别是4月份之后没什么特别多的事情了之后,我的作息有些时候就会不太规则,有些时候甚至会熬到晚上三四点才睡觉。不过到了研究生阶段以后,我开始更加注重保养自己的身体,如果没有什么非常急的事情,我一般都会在晚上1点之前睡觉,这对我在第二天能够保证精力充沛是非常有帮助的,因为我知道研究生第一年需要平衡学习和科研,以及其他的相关事情。虽然说凌晨1点左右睡觉还是有点晚,但是对我来说情况已经比之前好很多了。
Part 2. 从失落到自信 —— 从情绪受害者到情绪掌控者
2.1 2025上半年 —— 在崩溃边缘慢慢恢复
当时的我能恢复过来真是个奇迹呢!
从上面的内容其实可以看出,我在2024年年底已经几近到崩溃的边缘了,甚至比大二的时候还要更严重。这种情绪让我在提前一年进入实验室课题组的时间内,除了毕业设计以外几乎没有任何其他的科研进展。在这段时间做的只有一件事情,那就是把自己逐步从崩溃中拉回来。在今年4月份,我回坑了osu!,并且总共刷到了4000pp。然后,我认识了ZnCookie这个大主播,记得4月下旬的时候,通过他的直播间,我认识了一个名为owoshuangshi的osu!玩家,他当时是一个大一新生。也正是在他的鼓励下我才找回了和原来一样的动力,我记得在Notion单独总结过一个文档整理了一些和他一起的经历来着,但是我弄丢了,按关键词搜索找不到了,可能当时写完就删了(因为5月份以后有段时间退坑了一会儿),不过无论如何我和他是有一段很独特经历的,他除了玩osu!以外,还会玩节奏光剑和MC起床战争,这两个游戏虽然都是我没玩过的,但我还是知道一点,所以他在播这两个游戏的时候我跟他居然还是能谈得来,然后我就感觉有了“我真的很受别人关注诶”类似的这种想法。在从4月到8月,我和owoshuangshi没少在QQ上聊过天,内容不仅涵盖osu!,还覆盖了很多我们生活中的话题,他的出现让我的每一天都充满动力,我开始从消极逐渐变得积极,离不开他的帮助。与此同时,我也在高等数学上帮了他不少,给他讲了一些他不太会的题,同时也给了他我当时的ProDrafts pdf手写笔记资料,看到他跟我说考试做起来很顺利的时候,我也特别开心。当然他osu!比我玩得更厉害,这一部分在2.2再提。当然我记得我也帮他记得我们QQ上巨轮好像一直持续了很长时间来着,后来遗憾的是有一次家里人不小心把好友删了记录全没了,不过这也让我意识到其实真正的关系不是靠这些天数来维系的,这几个月无疑是对我们Best Friends关系的见证,在QQ上应该没有其他人比他和我关系更近了吧...
2.2 2025下半年 —— 从osu!中找回自信
osu!是个很好玩的游戏,无论是玩图还是做图,都能从中找到乐趣,甚至在情绪不好的时候,我也可以打开osu!打上几把缓解情绪和压力,真的是一个好玩又解压的游戏呢!
可以说这段时间是我osu!飞升最快的时刻。特别是6月~8月这段时间,我在owoshuangshi的提议下买了一个o3c用来提升按键的稳定性(数位板没买是因为以前就有,CTL-672),效果拔群(在一些节奏清晰的图,unstable rate从平均120140下降到了90100左右,有了这东西我甚至可以直接打OD10的图或者开HR打高acc),4月份~5月份左右,我靠着键鼠/键盘+o3c已经打到了4500pp的水平,而在换上数位板提升了大跳能力之后,我从4500pp飞升到了5500pp,同时也打出了很多非常有意义的bp,比如说下面这两个无疑是其中最有纪念意义的:
6月30日,在“奶龙”主难用HDDT mod(AR 9.67, OD 9.78, acc非常难打, 连续小跳+两处不规则flow)打出了276pp(rework后仍有272pp), 在当时全国排名第6,而且我当时只有大概4700pp,而前几名都是8000~10000pp的osu!老玩家,所以就觉得这个成绩很有价值。
7月14日,在A-Type的Sonnyc's TetriS-TYPE难度用HDHT mod(AR -5(极低缩圈速度),OD 7左右, CS 7(小圈))拿到了一个接近300pp的成绩,且是SS(100% acc, 当时实际pp大概是299.7pp, rework以后大削,只剩257pp了
T^T没300pp了)。因为这个成绩在bp里面显示的是300pp,所以我就把它当成了我的第一个300pp,也算是了结了去年提出来的心愿了,虽然说rework以后没有300pp了,但也非常有意义,是个很特别的300pp,还是靠着这个300pp升到了5000pp的门槛。
除了这两个bp以外,我还有很多其他很厉害的bp,大概在B站发了20多个视频,涵盖了HD/HDHR/HDNC(HDDT)模组(原来我会这么多mod的吗?还是默认HD玩家诶),不过这里就不一一列举了。
此外,除了玩图,我还会去做一些osu!图的mapping,了解了很多mapping相关的理论,并且真切地把mapping当成了自己的爱好,基本上一个月就能出一张图的样子:
在mapping上,我觉得最让我有成就感的就是12月初OWC 2025 finals tb(Tiebreaker)曲子的mapping。6分钟的长度和7.6星的难度,以及1900多个物件,确实都超过了我原有mapping的极限。而且这个难度整整花了我两天时间才做出来,因为当时看到这个曲子的owc难度,感觉曲子和故事版让我很震撼 (就和去年的Operation: ZenithFall一样),但觉得这个难度太难了(我记得是8.5星),所以便有了一点想重新做这张图的动力。当然真正原因还是因为想在2026年临近过年的时候和其他人来一个娱乐性的2v2 mp,但需要一个tb,正好这个曲子是能够震撼到我的一个曲子,但这个图又太难,所以自己做了一个tb。虽然说到时候不一定能玩得上,或者说可能太难了,但我仍然觉得这是我在mapping上一个非常有成就感的事情!
(记得周日那天肝了11个小时,算上周六估计就是2倍的时间)
感觉在osu!上最大的遗憾是由于暑假除了osu!外我还有很多其他必须要做的事情,我没有什么时间去练图/刷pp,也就没有达到6000pp的目标。在后面几个月,我看到很多我认识的osu!玩家刷到了比我的bp1(rework后 290pp)还要高的bp,以及很多玩家迈过了6000pp的门槛,但如果不是必要的东西,我觉得5500pp对我来说已经足够了,不刷pp其实也是没什么的,即使我刷到7000pp,对我以后的工作和科研也是一点用都没有。。。正是因为明白这点,我才能更加理性地安排我的时间,确保不会把大把时间浪费在玩osu!上。
为了克制自己,研一的第一学期,我故意把数位板和o3c落在家里来控制自己玩osu!的欲望,现在看来,我觉得已经开始有点反弹了,但是最开始两个月还是很有成效的。在后面两个月,没有数位板和o3c也能一定程度上减少我在osu!上消耗的时间。
Part 3. 从被动到主动 —— 从“要我做”到“我要做”,尽力不失去任何机会
3.1 暑假期间 —— 主动缩小自己和平均研究生之间的gap
每向前走一步,都是对自己的肯定。
在暑假期间,为了缩小本科阶段和研究生阶段的gap,我主动买了一个《研究生自救指南》(B站up 水论文的程序猿),并在大概10天的时间内看完了整个电子版pdf,里面涵盖了研究生从前期准备到后面找工作的全链条覆盖。包括研究生规划,前期科研论文阅读,如何搞创新,如何写作一篇英文技术论文等等,这些内容在暑假期间就已经记录在notion中并记好了笔记和标记,当然在研一的第一学期,由于有一个和企业合作完成的项目,这些东西可能会显得没那么重要。在2026年,我会更加专注和集中地投入到科研,这些《自救指南》中的内容就会非常有用,也许我需要在寒假再回顾一遍整个我的笔记中所记的内容。

因为我以前的大创项目没能成功结题,所以我觉得我的科研能力还是有待提升的。所以我抛弃了以前本科时期有优秀成绩的光环,按部就班地一点一点提升自己的科研水平,而这个指南正是迈开提升科研能力的第一步。虽然我知道它不会一蹴而就,但我觉得只要肯努力肯吃苦还是一定能完成的,师兄师姐们都特别优秀,所以我也要变得和他们一样优秀才行!
(我记得有一次经过实验室的时候,在学院楼7楼看到了23级学弟学妹们的大创结项课题,真的都好厉害,虽然说我不知道他们为此奋斗了多少个日夜,但可以肯定的是他们的学习和科研能力都很强,感觉真的开始有压迫感了,我也想和他们一样,继续努力,继续提升自己的科研能力。)
3.2 读研开学后 —— 从被动推进项目到主动跟进项目
回头再看这条路,我们运行了所有的代码,完成了所有的实验,听取了所有和公司的反馈,最终也成功地完成了项目。(照搬了PVZ Replanted白金成就
The Complete Zombie的描述句式,稍微改了一下)
这部分就细讲一下我的那个爬虫检测项目吧。它是一个利用大模型进行二分类的应用问题,需要根据用户的200多维特征来判断用户是否是一个爬虫。记得这个项目在5月底就开始了,但是一直做到了今年年底。最开始的时候,我还不怎么愿意搞这个项目,觉得是老师让我们做的杂活什么的,积极性不是很高,后面听说这个项目还有10000绩效,还能出实习证明,我就慢慢开始投入更多时间到项目中。当然在暑假时期因为有其他事情,所以在这个项目上投入的时间依然不多,不过师兄给我发微信的时候我仍然是一直在线的。有问题也会积极讨论(记得8月份的时候,我和师兄就会时常在微信或者飞书上语音讨论了),在这段时间,我接触到了一个知识星球并加了它们的飞书群,从中了解了很多和模型微调相关的知识,以及LlamaFactory的使用,这无疑对后面9月底开始尝试微调模型打下了基础。

当然这个公共文档里的内容我没有全看,只是需要什么就看什么,这样能够在实现目标的同时最大化地节省时间。
在这两个月内,我学会了调用开源模型进行推理,以及使用VLLM框架提升模型的推理性能(一开始是没法运行的,我记得这个问题当时在电脑桌前解决了好久,后面还是通过重装环境才解决的),同时设计了不同的模板,并且了解到不同的提示词模板对于模型性能的影响也是很大的。(后面又了解到,即使是一个字或者一个词语的变化,都会很大程度影响模型的平均性能)
然后,8月份结束了,我在9月初开学便开始积极和师兄对接这个爬虫项目,从这个节点开始,我也逐渐开始从师兄被动发消息催进度转变到自己主动汇报实验结果,无论实验结果好不好。可以说这几个月和师兄形成了一种无形之间的默契,而且在整个过程中,我做到了有消息必有回应,有问题一定解决。因为项目是年底结束,所以留给我们的时间很紧。因此,我们在9月份就完成了Base模型的选取和初始提示词选取,10月份开始模型微调,同时通过和公司那边沟通了解到了每个特征的重要程度不同,所以对每个特征划分了权重,结果就发现划分权重是个很好的方法,能够提升模型在用户数据集上的性能。11月份的时候,我们的phase_1模型基本已经达到性能(在测试集上快推理准确率93%左右,召回率89%左右,慢推理也有92%准确率和87%召回率,是性能最好的一个模型),本来性能已经达标了,但是这个模型精确率很低,只有48%左右,公司那边就进一步提出了精确率的目标。
当时还没有想到两阶段的检测,就想着用其他的方式来提升模型的精确率,然后我们尝试了不同的训练集数据配比对模型进行微调,但是效果都没达到之前的预期,要么是召回率太高精确率太低,要么精确率高了但是召回率又大幅下降了(如果能感同身受这两句话的话,那应该是在科研跑实验的过程当中跟我有类似的感受吧...),所以后来我和师兄讨论想到了两阶段检测爬虫的策略,第一阶段排除大部分正常用户,第二阶段重点针对第一阶段检测为爬虫的疑似用户进行二次确定,这样就能实现更加精确的爬虫检测。11月份我们主要对第二阶段进行优化,在这个阶段我们想到了采用类似RAG(检索增强技术)一样的方法,在系统提示词中导入一个爬虫检测的知识库给大模型进行参考,优化大模型的性能,在11月下旬向CTO汇报的时候,我们的知识库已经优化到了v2版本(目前已经是v9版本了)。这个版本的知识库在疑似数据集上实现了87%的召回率,精确率也接近60%,是当时性能最优的知识库。
但是,这个知识库仍然没有达到精确70召回90的目标。于是我们12月继续优化知识库,但是在微调模型上的效果其实都不太好,所以师兄就建议我后续的实验在Base模型上进行,也许能够提升性能的上限。后来师兄便让我把输出结果和它们的关键特征输出到一个表格里面,逐个用户分析,记得做这种机械性地工作消耗了我们几乎一整个周末的时间,而且当时是一个极限的DDL,师兄跟我说下周一公司那边可能就会跟我们要指标什么的。记得有1100多条疑似用户,师兄审核前600条,我审核后面的,当时记得每一条用户都做了批注(一共500条,想象这么大的工作量需要多长时间,如果看一条用户输出和特征和把特征打进去需要30s的话),所以弄了大概一下午直到快晚上的时候才弄完。当然,我们的工作没有白做,而且师兄的预测也是正确的,当时跟我们对接的人在周一那天群里发的第一句话就是"@xxxx @xxxx(我和师兄的名字) 目前指标什么情况?",看到这就知道我们上周赶时间改进知识库真的是个很正确的决定。
后面我们的知识库慢慢开始改进,从简单的基于规则进行检测,到后面同时带上检测和豁免规则,再后来把检测和豁免规则改为分步进行,后面又基于特征细化了检测流程,最后形成了一个初次豁免 -> 初次检测 -> 风险确定的框架,确定出正常用户和爬虫用户的同时,对于那些不容易确定的用户则确定为疑似用户,采用累计的方式进行检测(累计几天疑似 = 爬虫),同时采用了全新的提示词,让模型在总结原因时结合知识库中的分布流程。另外,我和师兄还仔细分析了规则每一步带来的漏检和误检,发现1100多条用户中有250多条用户误检,然后师兄就跟我说这部分误检的用户也可以看成是爬虫,可以把标签纠正过来,而且比在疑似用户中漏检的爬虫用户的风险还要高。不过这一套连招打下来,对于非疑似用户的准确率、召回率和精确率都能达到标准(【纠正标签之前】准确率85%、精确率60%、召回率81%;【纠正标签之后】准确率90%,精确率80%,召回率85%),我们12月份的紧张收尾也终于要告一段落了。
在这一路,我都学到了哪些东西呢?除了代码编写、调试以及及时和师兄对接的能力以外,我还学到了很多小知识,比如说对linux服务器环境越来越熟悉,知道了很多快捷键(比如vim使用当中,按下0和$可以分别跳到本行开头和结尾,在linux终端输入文件名和目录名时,可以按tab来显示已经确定名称的内容,是一个极其强大的自动补全工具,如果有多个匹配,也会自动ls出所有可能的文件);另外,我还学会了在excel上处理csv/xlsx的很多东西,知道了很多函数的使用(比如COUNTA, COUNTIF, 采用INT/SIGN来构造0/1逻辑条件等等),而如果没有这个项目的经验,我是学不到这么多实用的技巧的。所以,在今年接近尾声的时候,我真的想感谢自己真的把这个项目做完了,这不仅仅是结束,更是一个新的开始,也许有了这个项目的加持,我后续的科研进展也会顺利不少。(其实我已经做了个大表格来整理和自己研究领域相关的论文了,可能项目搞完就开始看或者复现了)
Part 4. 从追悔到充实 —— 个性的完善和不断丰富
4.1 Scoring System 3更新进展
在今年,除了上面提到的这些东西以外,在前两年就一直提到的Scoring System今年也有了一些更新,去年已经实现了一些基本的待办任务管理功能,今年我在此基础上增加了更多的功能:
- 玩家信息和每日战报 —— 感觉看了这些会很有成就感
统计每一天的投入时间,增加的经验值和pp值,以及创建/完成的任务。

每日战报:支持查看过去30天的用户信息

- 待办和完成任务难度评定框架,以及pp算法的重新修改
2024年的版本评定任务只靠预估时间、截止时间(相当于osu!里面一张图的物件数)和任务的质量系数,现在我们把任务评估的维度从这一个维度扩展到了4个维度(质量系数、阻力系数、重要程度、紧急程度),并把它以和osu!四维类似的方式表述:
- 质量系数 = Overall Difficulty = OD
- 阻力系数 = HP Drain = HP
- 重要程度 = Circle Size = CS
- 紧急程度 = Approach Rate = AR
如下图所示:

而预估时间和截止时间则定义了物件数的密度,也是影响任务星级的一部分。
这是我项目当中pp算法的实现,感觉参考了很多osu!的pp算法:
def calculate_pp(self, todolist, acc, order_delta=0, remaining_offset_sec=0, if_finished = False): #计算某个特定任务完成后,玩家的pp# 一个任务的pp可以分为3个部分:# 这里的todolist实际上是task,也就是任务pp_speed = 0 # 速度pppp_process = todolist.pp[1] # 过程pp(随任务完成而更新)pp_quality = 0 # 质量系数ppmake_progress = order_delta / todolist.order## 速度pp的计算try:duration = todolist.deadline - todolist.creatimeexcept TypeError:duration = todolist.deadline.timestamp() - todolist.creatimeprint("duration:", duration)duration_min = duration / 60 # 求结果持续的分钟数# 获取剩余时间if hasattr(todolist, 'finishtime') and todolist.finishtime is not None:remaining_time = todolist.deadline - todolist.finishtimeelse:current_time = datetime.now()remaining_time = todolist.deadline - current_timeremaining_min = max(0, (remaining_time.total_seconds() - remaining_offset_sec) / 60) # 分钟数# 新公式的参数a = 1.1905 # 基础系数x = remaining_min # 剩余时间(分钟)c = max(todolist.emergency, 0.05) # 紧急性(AR)if c <= 5:k = math.sqrt(c)else:k = math.sqrt(1 + 1.2 * (c - 5))f_t = max(todolist.fraction, 0.05) # 阻力系数(HP)m = max(todolist.importance, 0.05) # 重要性(CS)o = todolist.quality # 质量系数(quality/OD)if isinstance(todolist.creatime, float):# float -> datetimetodolist.creatime = datetime.fromtimestamp(todolist.creatime)if isinstance(todolist.earliest_deadline, float):# float -> datetimetodolist.earliest_deadline = datetime.fromtimestamp(todolist.earliest_deadline)duration = todolist.deadline - todolist.earliest_deadlineduration_min = duration.total_seconds() / 60#求结果持续的分钟数density = todolist.estitime / duration.total_seconds()if density < 0:density = 0 # 防止density为负数,从而导致density_factor出现复数结果density_factor = min(11.1 * density, (-1 /(density ** 0.2 - 1.11) * min(density, 2)))pp_speed_uplimit = 1.1905 * (duration_min / 60) * (1 + density_factor)if isinstance(type(todolist.deadline), datetime):# 计算todolist.deadline对应的时间戳deadline_timestamp = todolist.deadline.timestamp()if hasattr(todolist,'finishtime') and todolist.finishtime is not None:try:remaining_time = todolist.deadline - todolist.finishtimeexcept TypeError:remaining_time = todolist.deadline.timestamp() - todolist.finishtimeelse:current_time = datetime.now()try:remaining_time = todolist.deadline - current_timeexcept TypeError:remaining_time = todolist.deadline.timestamp() - current_timeremaining_min = max(0, (remaining_time.total_seconds() - remaining_offset_sec) / 60) # 计算新公式pp_speed = (pp_speed_uplimit * (remaining_min / duration_min) ** (0.7 * k) # 剩余时间的影响* (1 + c / 0.7) # 紧急性的影响* ((f_t / 5) ** 0.4) # 阻力系数的影响* (1 + 0.03 * m) # 重要性的影响)## 过程pp的计算 -> 直接取决于estitime# pp_process中,AR不影响这一部分,只有HP和CS影响这一部分# 原有的pp_process * (f_t / 5) ** 0.8 * (m / 5) ** 0.2 = 新的pp_processif not todolist.finished and not if_finished: # 没有完成,而且不是if_finished(也就是说不是在查看pp界面,说明是结算界面,这个时候不会增加pp值)pp_process_delta_original = (((todolist.last_elapsed / 72) + min(max(todolist.dynamic_usetime - todolist.estitime, 0), todolist.last_elapsed) / 36) )pp_process_delta = (((todolist.last_elapsed / 72) + min(max(todolist.usetime - todolist.estitime, 0), todolist.last_elapsed) / 36)* (1 + ((6 / 11) * todolist.quality) * max(0.1, ((todolist.estitime - todolist.usetime + todolist.last_elapsed) / duration.total_seconds())))* (make_progress ** 0.6)* ((f_t / 5) ** 0.8) # 阻力系数的影响* (1 + 0.03 * m) # 重要性的影响)if todolist.status == TodolistStatus.WORKING:counting_time = max(todolist.last_elapsed + todolist.dynamic_usetime, (todolist.estitime + todolist.last_elapsed + todolist.dynamic_usetime) / 2)else:counting_time = max(todolist.last_elapsed, (todolist.estitime + todolist.last_elapsed) / 2)if if_finished: # 查看pp界面的计算方式pp_process_delta_if_fin_original = (((counting_time / 72) + min(max(todolist.last_elapsed - todolist.estitime, 0), todolist.last_elapsed) / 36))pp_process_delta_if_fin = (((counting_time / 72) + min(max(todolist.dynamic_usetime - todolist.estitime, 0), todolist.last_elapsed) / 36)* (1 + ((6 / 11) * (todolist.quality * 1.1)) * max(0.12, ((todolist.estitime - todolist.dynamic_usetime + todolist.last_elapsed) / duration.total_seconds())))* ((f_t / 5) ** 0.8) # 阻力系数的影响* (1 + 0.03 * m) # 重要性的影响)else: # 结算界面的计算方式pp_process_delta_if_fin_original = (((counting_time / 72) + min(max(todolist.last_elapsed - todolist.estitime, 0), todolist.last_elapsed) / 36) )pp_process_delta_if_fin = (((counting_time / 72) + min(max(todolist.usetime - todolist.estitime, 0), todolist.last_elapsed) / 36)* (1 + ((6 / 11) * (todolist.quality * 1.1)) * max(0.12, ((todolist.estitime - todolist.usetime + todolist.last_elapsed) / duration.total_seconds())))* ((f_t / 5) ** 0.8) # 阻力系数的影响* (1 + 0.03 * m) # 重要性的影响)if todolist.finished:pp_process += pp_process_delta_if_fintodolist.pp[1] = pp_processelif if_finished:pp_process += pp_process_delta_if_finelse:pp_process += pp_process_deltatodolist.pp[1] = pp_process## 质量系数:取0~11, 以及使用osu!的经典算法来计算这部分pp## osu原有算法是这样的:## acc pp = 2.83 * 1.52163^OD * accuracy^24 * min(1.15, (circle count/1000)^0.3))if not if_finished:pp_quality = 2.83 * 1.52163 ** (todolist.quality) * ((acc / 100) ** 12) * min(4, (todolist.estitime / 15 + 0.2 * max(0, todolist.usetime / 15 - todolist.estitime / 15))/1000 ** 0.3) + 0.01 * (todolist.quality) * (pp_speed + pp_process) * max((1 - 2 * (1 - acc / 100)),0) else:pp_quality = 2.83 * 1.52163 ** (todolist.quality) * ((acc / 100) ** 12) * min(4, (todolist.estitime / 15 + 0.2 * max(0, todolist.dynamic_usetime / 15 - todolist.estitime / 15))/1000 ** 0.3) + 0.01 * (todolist.quality) * (pp_speed + pp_process) * max((1 - 2 * (1 - acc / 100)),0)# low_accuracy_penaltyif todolist.finished or if_finished:if acc < 90:debuffs_time = math.ceil(90 - acc)pp_speed = pp_speed * (0.99 ** debuffs_time)pp_process = pp_process * (0.99 ** debuffs_time)if acc < 80:misses = math.ceil(80 - acc)pp_speed = pp_speed * (0.97 ** debuffs_time)pp_process = pp_process * (0.98 ** debuffs_time)if not if_finished:todolist.pp[1] = max(0, pp_process)pp_speed = max(0, pp_speed)def safe_power(base, exponent):"""安全的幂运算函数,避免负数的非整数次幂导致复数结果。:param base: 底数:param exponent: 指数:return: 计算结果"""if base < 0 and not isinstance(exponent, int):# 如果底数为负数且指数不是整数,取绝对值并计算幂,最后取相反数return -abs(base) ** exponentelse:# 否则直接计算幂return base ** exponent# 计算总pp# 总pp = 速度pp^1.1 + 过程pp^1.1 + 质量系数pp^1.1# 总pp = 总pp^1/1.1total_pp = safe_power((safe_power(pp_speed, 1.1) + safe_power(todolist.pp[1], 1.1) + safe_power(pp_quality, 1.1)), (1 / 1.1))if not if_finished:if self.luck.total_luck_level >= 5:pp_buff_num = 0.01 * random.randint(0, 25)pp_buff = 1 + pp_buff_numtotal_pp = total_pp * pp_buffelif self.luck.total_luck_level == 4:pp_buff_num = 0.01 * random.randint(0, 20)pp_buff = 1 + pp_buff_numtotal_pp = total_pp * pp_buffelif self.luck.total_luck_level == 3:pp_buff_num = 0.01 * random.randint(0, 15)pp_buff = 1 + pp_buff_numtotal_pp = total_pp * pp_buffelif self.luck.total_luck_level == 2:pp_buff_num = 0.01 * random.randint(0, 8)pp_buff = 1 + pp_buff_numtotal_pp = total_pp * pp_buffelif self.luck.total_luck_level == 1:pp_buff_num = 0.01 * random.randint(0, 2)pp_buff = 1 + pp_buff_numtotal_pp = total_pp * pp_buffelse:pp_buff = 1pp_buff_num = 0print("debug pp:")if if_finished:print("speed:",pp_speed, "process:",pp_process, "acc",pp_quality,"overall:",(total_pp))else:print("--not if finished--")print(pp_speed, todolist.pp[1], pp_quality, total_pp)if if_finished:return (total_pp, pp_speed, pp_process, pp_quality)else:return (total_pp, pp_speed, todolist.pp[1], pp_quality, 100 * pp_buff_num)
以及对应的对任务计算Star Rating的代码,虽然模仿osu!不太成熟但确实对简单的任务和困难的任务从不同的维度评估了任务的难度,并且考虑了任务的紧急程度、重要程度、阻力系数和质量系数。
def calculate_star_count(self):# 1. 计算创建时间和截止时间的时间差(秒)if self.deadline is not None:creation_time = datetime.fromtimestamp(self.creatime.timestamp()) if isinstance(self.creatime, datetime) else datetime.fromtimestamp(int(self.creatime))total_time_seconds = (self.deadline - creation_time).total_seconds() / 86400 # 转换为天if total_time_seconds < 0:total_time_seconds = 0else:total_time_seconds = 0 # 如果没有截止时间,默认设为0density_spd = self.estitime / (86400 * total_time_seconds) if total_time_seconds != 0 else 0# 2. 计算 Star Ratingod = max(self.quality, 0.05)ar = max(self.emergency, 0.05)hp = max(self.fraction, 0.05) # 这里似乎应该是friction, 但是代码定义变量的时候就搞错了(cs = max(self.importance, 0.05)time_star_rating = self.k * (total_time_seconds ** self.m) * math.sqrt(2 * ar) * density_spd + 0.07 * hpprint(f"time SR: {time_star_rating}") # 3. 计算当前时间和截止时间的时间差(秒)current_time = datetime.now()if self.deadline is not None:remaining_time_seconds = (self.deadline - current_time).total_seconds() # 剩余时间(秒)if remaining_time_seconds < 0:remaining_time_seconds = 0else:remaining_time_seconds = 0 # 如果没有截止时间,默认设为0# 4. 计算增幅if remaining_time_seconds > 0:time_multiplier = (1 + 2 * math.sqrt(ar)) * self.estitimek_spd = time_multiplier / remaining_time_seconds# 这个差距带来的star_rating增幅speed_star_rating = min(k_spd, 0.5 * time_star_rating)else:speed_star_rating = 0 # 如果没有剩余时间,则增幅为0# 5. 最终 Star Ratingfinal_star_rating = time_star_rating + speed_star_rating# 6. 过程Star Rating:# 根据下面公式计算# pp_process = a * log_k(todolist.estitime / 72 + max(todolist.usetime - todolist.estitime,0) / 36)# 但是需要通过公式pp_process = log_k(todolist.estitime / 72)拟合一个系数k# 我们假设当1小时工作量的SR为2.00,3小时工作量为3.00,如何拟合系数a和k呢?# 计算 f(x)x = self.estitimed = self.usetimeterm1 = x / 72term2 = max(d - x, 0) / 36term3 = 0.5 * max(x - 21600, 0)term4 = 0.5 * max(x - 43200, 0)term5 = 0.5 * max(x - 86400, 0)# f(x) 计算if hp < 4:hp_processed = 4 - 0.4 * (4 - hp)else:hp_processed = hpprocess_sr = self.a_proc * math.log(term1 + term2 + term3 + term4 + term5, self.k_proc) * (hp_processed/4.67) ** 1.1if process_sr < 0:process_sr = 0.01renpy.log(f"time:{time_star_rating}, \nurgency:{speed_star_rating}, \nprocess:{process_sr},")renpy.log(f"importance: {cs * max(0.03, 0.01 * (final_star_rating + process_sr))}")print(f"time:{time_star_rating}, \nurgency:{speed_star_rating}, \nprocess:{process_sr}, importance: {cs * max(0.03, 0.01 * (final_star_rating + process_sr))}")return (final_star_rating + process_sr) + cs * max(0.03, 0.01 * (final_star_rating + process_sr))
感觉这应该是我的Scoring System很核心的算法了,至于其他代码当然就不能公布了,要不就相当于开源了,这东西我可能会考虑之后上架Steam都说不定,而且后面肯定还要继续优化的
4.2 我的其他成就
正是有了这些,才让我的2025更加充实和更有意义。
除了这个需要单独拎出来的Scoring System 3以外,我觉得其他地方我的成就也还挺多的,一切都从2025年换了新笔记本电脑开始,我开始逐渐从失落中恢复起来,随后,命运的齿轮开始向前转动...
- 在3月份的闲暇的时间,我弄了一些小而有趣的项目,比如根据歌词给喜羊羊与灰太狼切歌和复活,当然我记得第一次对视频对到底的时候还是很有成就感的,甚至发到那个视频up评论区了,up都吓了一跳感觉很厉害,下图是一个名为喜灰OP,但是一句话字数小于7就切歌,连续两句字数大于7就复活的输出结果:
- 4~6月份,pjsk开服了,感觉和osu!差不多的环境让我特别好奇,所以我主要是以玩pjsk为主(因为这个游戏是3月底的时候开服,记得刚开服的时候卷强度还是花了很多时间的,估计以后再也没有这么多空闲时间去做这样的事情了),记得我还凹了两个活动,一个是开服后的第三个活动Rise as one! 750w分卷到了前400名,另一个是More More Jump!的WL(World Link)活动,记得是1320w分左右,进了前1500名(wl活动的强度比正常活动高多了,如果要刷前1000的话,还要再多出几百万分,我记得是这样),记得这8天刷这个活动都没怎么休息,最后一天的时候为了避免那种活动结束分数线开始快速提升的情况,我记得我刷了一个通宵来着(找到了一些技巧,卷这个活动几乎60%以上的时间都在刷
lost and found这一张图,到专门的qq群里面找车队然后开刷,一刷就是一个多小时)
当然凹了这两次以后,后面就对凹活动失去兴趣了,而且也越来越难凹分了,所以后面活动就再也没凹过了,可能只是拿个250w分左右把能兑换的东西都换完就结束啦~(后面稍微退坑了一下,10月份回来的时候,已经不那么在乎这种活动了)
![]() Rise As One 排名 | ![]() mmjwl 活动结束前1分钟截图 | ![]() mmjwl 真正排名(奖励领取页面) |
![]() | ![]() | ||||
![]() | ![]() | ![]() | |||
图:MMJ WL活动结束后的剧情
- 5月底,我参与了一个学长导师活动,只不过这次和大二大三不一样不是辅导而是给孩子讲科普课程了,名字叫做《计算机的奇妙世界》,我感觉我克服了自己的恐惧(可能和提前来场地也有关系),感觉也挺成功的,能让孩子们对计算机有所了解就好了

- 6月中旬的时候,我参与了学校的绿色毕业季活动,拿出了很多自己留着的小东西出来卖,能有钱赚是真的出乎我的意料了(第一天赚了100,第二天200,第三天因为下雨没人来,总收益300元,都是靠回收这些东西换来的)

- 7~8月份,本来想着暑假好好玩一会的,甚至已经约好了回到家以后和owoshuangshi一起玩双人成行来着,但实际上现实把我狠狠打碎了。回到家,我爸妈就让我学车,还给我讲了很多大道理,跟我讲“以后可能没时间练车了,所以趁现在暑假时间长就把车学了吧”还有些其他的东西。
没错,在暑假这段时间,学车也是个很重要的任务,这也是没时间投入到项目的一个很重要的原因。
在我回到家的第二天,没错,第二天!(甚至没给我放松的时间,不过后来就知道了)我爸就拉着我报了迅达驾校。科目一很正常,先刷课时再约考试,一切都在预定时间计划内,7月7号考试,8号就开始正式练习科目二了,而从科目二开始,我的噩梦也就开始了,也想起了大一练车的时候那种对学车的恐惧...
不过好在,教练对我还是很友好的,有的时候还能跟我聊聊天什么的,第一天我就学会了左倒库和右倒库,也能知道如何根据后视镜微调方向盘。后面也分别学习了坡起(坡道定点停车与起步),侧方停车、曲线行驶和直角转弯,学习这些东西还是很顺的,因为后面大一那时候学过的东西都想起来了。再往后就是每天绕着练习场跑圈(这里的一大好处就是考场 = 练习场,所以直接熟悉了考点,这是这个驾校很有优势的一点)
科目二的考试是在7月22号,记得当时一把通过的时候我甚至是跑着下车的,最后科二拿了85分,坡起扣了10分以及中途停车一次扣了5分。我真的没想到像我这种人也能一把过科目二,这无疑增强了我能拿证的信心。
科目三在约考之前需要先刷够里程,然后再预约考试,当时的教练和我们因为约朝阳县还是约朝阳市考场闹了矛盾,后来考虑到没考过再考一遍的需要,最后就约了朝阳市考场。但是,我的科目三完全是零基础,不能保证一把过,考虑到需要留出再预约一次的时间,我和父母、教练商量了一下就约了8月18号的考试(本来约的是8月13号的,不过那几天去老姑家玩所以往后推迟了一下),朝阳市考场分成2号线、4号线和3号线,它们的难度是这样的:3号线最难,2号线中等,4号线最容易。但在考前两天(8.16~8.17)的突击中,教练发现我靠边停车很容易出现停不稳的问题,看到教练拉着的另一个女生她停车特别好我就感觉很羡慕,也感觉她特别厉害,不过后来练了很多圈,我的靠边停车也没有什么进步。所以,教练给我想了一个方法,就是让监考警察帮忙点一脚停车,保证其他过程不扣分就可以了。
很快,我调整自己的状态,在8月18日下午(没错约成的是下午场),教练又带着我过了一遍2号线和4号线,心想科目三终于能过了吧...结果到了我的时候,很不幸抽到的是3号线,一下心态就有点崩了... 然后开始考试,因为紧张过度,第一次考试的时候,我甚至做错了灯光,导致一次考试机会白白浪费了,我还记得是“通过人行横道”,然后我就以为打近光就行了,结果是远近光交替> <然后就听到了这种语音....“您的扣分项是xxxxxxx,成绩不合格,请准备补考”,一上来就是第二次,真的太丢人了... 后面在第一个红绿灯的时候,那边的人说红绿灯坏了可以直接走,然后我就忘了在路口点刹车,以及那个警察是新来的不知道这里的规则没帮忙踩刹车 >_< 总结来说就是彻彻底底的failure... 走过这个路口就被播报"您的扣分项"了,然后成绩不合格直接走人...当时真的有点要崩溃了...尤其是灯光挂了真的是我没想到的,也许吧,如果我灯光不出问题,后面也不一定能过,3号线确实有很多注意不到的细节。
后面的10天,我就一直在复盘我为什么没做好,我妈也说了我一顿,感觉特别难受,记得18号那天晚上到了凌晨3点多了都没睡着,还在想这个事情... 后面甚至由于这件事情osu!都刷不出什么bp了,10天冷却窗口到了以后,我终于能够预约了,这次是9月2号的上午场,正好赶上开学的那几天了,爸妈就想了一个办法,让我坐飞机去学校,其他的东西他们给寄过去,我也觉得这个主意挺好的,就接受了。因为是坐飞机,所以能带的东西要尽量少一些。我也就把我的数位板和o3c留在了家里,一方面是节省重量,另一方面其实可能也是那段时间真的要开始戒断或者主动弃坑了(虽然后面又开始用键鼠捡起来了,但至少9月一整月时间我都没多少游玩次数的)。话又说回来,2号那天上午考试,教练带我跑了2号线和3号线,4号线相对简单就没跑,我觉得经过这么多天的练习,这三条线路已经记在心里了。后来准备考试了,我非常幸运的抽到了4号线(真的难以想象,有的时候运气也是实力的一部分捏),除了中间有一个地方熄火扣了10分以外,我也是非常幸运地擦线过了科目三(90分),然后我就在想能不能第二天就把科目四考了,这样回去就不用再考试了,如果回去以后假期时间不长的话也不用担心了。(因为理论知识对我来说基本上来说没什么问题,就是刷题的事情,感觉一天左右就够了)
9月3号上午,我以98分成绩通过了科目四考试(最后一道多选错了,要不也是100),我的爸爸也在今天请假了,带我开车去取我的驾驶证。当我去到朝阳县车管所拿到自己驾驶证的那一刻,我感觉整个暑假的努力都是值得的。从报名第一天,到离开家的最后一天,极限拿下了C1驾驶证,这对我来说应该是最好的结局了吧...对于学车一窍不通的我,最后还是做到了呢。
此外,除了机动车以外,我还在妈妈的指导下在大概三天时间学会了骑自行车,从一开始还不能掌握平衡到后来可以来去自如,我也很感谢妈妈的帮助和鼓励。
时间证明,在今年拿下驾驶证是性价比很高的,因为我记得明年科目二和科目三难度就增加了(科目二从5项增加到9项,恐怖),这样驾校报名费用也会增加,在今年拿下反倒减少了不少负担;至于会骑单车,那就更加影响自己的生活了,多了一个日常的代步工具,在学校穿梭的时候能省下不少的时间。原本步行30~40分钟的路程,现在只要15分钟左右就到了。可以说,会骑单车完全改变了我的生活方式。当时虽然有所抵触和不情愿,但现在我相信这是我在暑假做过的最正确的决定,感谢父母的开导,也感谢自己能够在那个时期坚持下来。
- 开学后,我成功竞选了班级的学习委员,目前为止已经处理了很多相关的工作(比如收学籍表和研究生登记表,当时记得因为有些同学在不同的地方联培,能收齐这些东西其实是需要很多线上沟通和对接的,但我最后成功收齐了它们),这些经历提升了我的学生工作经验,同时也让我更加清楚党全心全意为人民服务的宗旨;在10月份,我被选为入党发展对象,但我深知自己对党的理论知识和党的历史理解仍然不够深入,所以我在后面的集中培训上认真学习,也积极完成了学院要求的志愿活动,最后在12月初,学院拟定预备党员的名单里出现了我的名字,我真切意识到我在思想上入党的努力获得了组织的认可。几天后的党员大会也同意了我被选为预备党员。我深刻意识到,成为预备党员不仅是一个头衔,更是一份责任和担当,在今后,我会进一步深化对党相关理论知识的理解,同时继续坚持用自己的实践来践行全心全意为人民服务的宗旨。努力用党的理论武装头脑,为全面建设社会主义现代化强国,全面推进中华民族伟大复兴而奋斗!
4.3 生活中遇到的那些小确幸
我在生活中也遇到了很多令我惊喜的时刻,正是他们的出现才让我在平凡重复的生活中找到了一点甜蜜的感觉。
在开学之后,我在生活中也遇到了很多令我惊喜的时刻。让我印象很深的是wyx和hjx(Pazuris)两个22级的同学,我是他/她们的学长。可能也是因为以前大二本科的时候和他/她们关系就很好,因此印象就很深刻。记得wyx问过我我保研(预推免)的经验以及之后又问我和毕业论文开题报告相关的东西,我也尽了自己最大的努力分享了自己的经验,虽然只是一个很小的事情,但对我来说,我真切地感受到我居然还能是别人的引路人,就感觉很欣慰。hjx则是原来我本科在学生会任职第二年的时候,当时我是学术部部长,而他是学术部副部长。记得我的第一个年度总结(2023年年底的)就是看了他的年度总结以后感觉很羡慕才写出来的。后面就开始坚持每一年都写总结了,记得他发pyq说他在构思他的年度总结的时候,我也跟他说了我的计划,然后他很期待我今年的总结,所以我才有动力写到现在。另外就是在想这周六(2025/12/27上午)开始敲键盘写的时候遇到了一个B站up名叫楠原の腐乳,他的直播标题也是要写年度总结,这一下就吸引到我了,我还跟他说要跟他一起写来着,不知道他是否期待我完成的年度总结呢?
Part 5. 致谢和总结
5.1 致谢
能坚持看到这里的uu们已经相当不错了!接下来就是最重要的报菜名部分啦~ 在这一年我能有如此大的进步,当然离不开大家对我的鼓励、支持和帮助!
首先当然要感谢我的父母,他们一直都是在背后默默支持我的后盾,也能包容我的情绪,开导我让我想开,虽然说有的时候我和父母的观念会有所冲突(比如在玩游戏上),但我也会努力去理解和接受他们的意见。无论如何,我都要感谢他们,因为他们的支持和鼓励,才让我能够在这个过程中走得更远飞得更高。
然后我要感谢我的导师,我的导师没有给我创造特别紧张的交流讨论环境,在每次组会的时候即使我每晚成那么多进度也不会说我,而是愿意和我一起发现研究问题并提出建议,他真的是一个好导师,师兄师姐们跟着导师已经发了很多论文了,我觉得我也不能落下,我希望我也能用自己的成果来报答导师对自己的关心和照顾。
接着是感谢实验室的所有师兄师姐们。特别是那个和我一起做爬虫项目的师兄,真的非常非常感谢他对我的付出以及在背后和公司的人员单独对接。师兄的经验和责任心真的出乎了我的意料,还很贴心的关心我。在工作时间,他是能和我不厌其烦讨论的同事;在休息时间,他又是能考虑我感受的好朋友,如果飞书有聊天次数统计的话,估计得有几千条来回的消息了,三个月的友谊巨轮甚至都能直接安排上了。总之,无论如何,我在他的指导下,我的进步也是特别快的,不仅在这几个月跟师兄一起完成了项目,还学到了很多各个方面实用的技能和知识,真的非常感谢师兄!我也希望第二年读研的时候,我也能和师兄一样成为一个能独当一面的人,能够成为其他人的称职师兄!
最后是osu!里遇到的大家,感觉大家都特别友好,特别感谢owoshuangshi让我逐渐变得外向起来,也解开了我心理上的问题(而且他还是AR9.8大神!虽然只会DA打图但也很厉害),特别感谢20Cat这个我关注了一年的osu!玩家,他甚至说我是他的骨灰级粉丝,一年的时间真的好感度已经拉满了,在2026年新年的2v2 mp我就是和他一起组队哦。还有就是要感谢*Citrusia*对我的相信,他是我在11月份交到的好友,一直相信我能到6000pp,还把我拉到了一个群里面,和认识的人一起感觉还挺舒服的。另外就是还有一个3000pp的玩家*dolokey*(B站名叫:无穷无尽的夏天)和我关系也特别好,可能就是那次科目三考试失利以后,那天晚上偶然看到了他的视频,一眼望去居然有200多个,然后就开始好奇了没人看的情况下他是怎么坚持到现在的。然后他就给了我答案,就是因为他喜欢这些曲子,就把他们记录下来了。后面跟他一起mp了好几次,感觉跟他的关系也越来越好啦 还有些其他的玩家,比如ZnCookie, ScarletRemilia-, Zzzoxer, vulcan829, fuyukiS等等,他们也都给我留下了很深刻的印象,也感谢你们出现在我的2025。
5.2 My New Year's Resolution
说到这里,突然就想到一个类似的漫画样式的短视频了
“2025”:这是你的孩子,2026,拿着它继续向前走吧!
“2026”:我一定不会辜负你的期望,2025,我会继续努力,继续向前!
- 潜心研究,争取在2026年底发表一篇CCF-A会议论文,为后续的硕士开题报告打下基础;
- 如果有时间,我会努力提升自己的osu!实力,并拿下6000pp(如果没时间就算了)
- 保持现有的健康生活习惯,平衡学习、工作、生活和游戏的时间,减少自己一年的熬夜天数;
- 如果有时间,我会继续保持对志愿的热爱,希望今年能像wyx那样参加大型活动的志愿服务。
5.3 结语
最后,我要再次感谢能看到这里的所有人,都到这来了也许你一定会对这篇总结有很深的共鸣吧。和去年相比,今年我真的非常直接地感受到了自己的成长和进步,我也觉得今年相比去年充实了不少,我个人认为我的2025年是问心无愧没留下什么遗憾的,正如标题,我已经把丢掉的东西都捡了回来。在2026年,我会继续尽自己的最大努力,Gumbarlzo~ (这个是日文罗马音,它的英文翻译就是I'll do my best哦,这个曲子也是owc2025的finals TB,感觉很好听很震撼),所以我希望大家和我一样,在新的一年都能够做到最好哦~ 另外我也希望,在新的一年我不会丢掉任何机会,任何自己有的东西,一直保持和2025年一样的向上尽头往前冲!也希望大家在新的一年能遇到更多机会和希望,无论你现在的处境是好是坏,都要相信,一切都是上天给你最好的安排。







