Skip to content
This repository was archived by the owner on Jul 11, 2026. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner

Hazelita

适用于高中生的数学 CAS 计算套件和演示工具。
该项目已停止开发。

Typing SVG

The Story.

2026 年 7 月 10 日,晚 10:29。

零音对着空荡荡的 VS Code 发问:Hazelita,究竟是成功的吗?

学校那边似乎在下大雨。不过零音润回家里了。西安最近的天气热得异常——或许本应如此。印象中早年西安到了这个点,便一定是要热起来的。有朋友说平时最热的日子还要靠后一些,而今年却热得过早了——零音不知真不真,究竟是西安已经展现其无限的热力了呢,还是说更加火热的日子仍在后头呢。

出校门的时候,看见年过不知几旬的工人们,戴着一顶破草帽,穿着学生军训时的衬衫,开着三轮车,在宿舍楼、教学楼和大门口之间来回运输共享单车。零音记得,在零音这一级军训结束后,工人们身上便都有了迷彩的衬衫。零音也曾如此想过,将自己的衬衫叠整齐后放在垃圾桶旁,却又未免觉得有些刻意,于是衬衫还在零音的衣柜里挂着,和零音的裙子、堆堆袜之类挂在一起。

返程的地铁有些拥挤。向西安南站方向坐了一站,落座时闻到了一股酸臭的味道。零音朝着味道的来源看去,衣衫褴褛的一位老年人正靠在座椅的一侧。从姿势可以看出来,他在落座时是极为拘谨的;可能是太累了吧,靠在那里睡着了,却也一动不动,即使对面的小孩正在极为大声地外放奶龙短视频,吵得零音也有些心烦意乱。地铁到站了,人们都下车了。乘务员拿着喇叭才叫醒了他,他挠了挠蓬乱到不知多久没洗的头发,搔了搔自己已经破损无数的衣服,于是勾起了已然磨得不像样子的布鞋,一瘸一拐地走出了地铁。

零音没敢看。零音转过身去背对着他,却从这一侧地铁的玻璃倒影中看见了那个身影。其实零音一向是难以接受去看这些可怜人们的生活的。在地铁口顶着四十度高温卖东西的老人,在生活的困境中一步步挣扎走向终点的平凡人——他们在零音的眼里,却都是无比令人同情的。零音有一瞬间会诞下异样的想法,觉得这些人都应当同情;可零音也记得,家人曾出于同情购买了一位老人在大热天出摊卖的西瓜,结果腹泻整整三天;零音自己也曾在路边摊购入凉皮,结果高烧数天。想起这些悲惨经历,零音又突然收回了这种同情。

同情似乎是一个廉价的词语——至少在零音的世界观里。一句「同情」并不能为被同情者解决任何问题,却可以象征性地宣告其权威,并断言自己已尽到对被同情者的一切义务。可同情结束后,被同情者的状态似乎并没有改变多少,同情于是沦为了一种宣告。一方面,零音在获得他人的同情时会感到无比的绝望:因为倘若是随手之劳,他人必可随手帮助;可若某种情况复杂到连他人也无法鼎力相助,他人必然无法收束其无法帮助的悲哀,于是这样的悲哀,经过转义后,化为了同情——从而同情象征着必须自食其力的伊始。另一方面,零音亦遵循着这样的轨迹,在无法帮助别人的时候流露出无限同情——但毕竟零音本心是想帮助别人解决问题的。同情于是泛滥起来,也变得廉价。零音固然知道这样的归因有些谬误,或至少并不恰当,可零音在无数次失望后,便的确如此认为了。

于是零音又期待着毁灭,期待着这世上所有不幸都可以消弭——至少这样的话,世界便会充满阳光了。可这毕竟是更大的谬误和误区了。零音于是收紧了自己的思绪,转过头看向自己了。

未来,会变好的吧?

倒影中的自己是多么令人胆战心惊啊。零音第一次穿上本应属于零音的衣服,站在大学生活动中心二楼的一块废弃的屏幕面前,借着倒影一点点调整着自己的姿态。零音总觉得自己不够漂亮,于是生出无限惆怅——可这样的惆怅经过了朋友的安慰,变成了更大的伤悲。零音无法断言,别人眼中零音的好、优秀、美丽,究竟是出于其真心的赞誉,还是只是为了防止零音更加绝望而编出的谎言。零音曾经如是向他人编纂过谎言;零音不愿直接指出他人的不足,于是用谎言麻痹别人,也麻痹自己;可后来这种麻痹竟然毒害了零音的整个思绪。零音偶尔在夜深人静的时候会想,全世界其他的人们——包括正在阅读这段文字的读者——是否都彼此认识,于是他们编造出一张无限的网,将零音视为一个被模拟的程序。零音愈想,却愈无法挣脱,因为挣脱本身也可作为这种猜疑的证据。于是零音不再想了。

有朋友建议零音去精神科看看。于是零音真去了。其实,零音高二的时候,也就是 KaguReion 伊始之时,就罹患抑郁了:中度抑郁、重度焦虑、重度被害妄想症。这种状态一直持续到快大二的年纪。老实说,其实现在零音的状态已经好了很多了,至少已经像一个能正常行事的个体了。零音不禁为过去的零音生出无限的悲哀。呜呼哀哉!只是零音偶尔也会想,自己其实并不是完全的被害妄想,更多是被骗妄想——不过想了想,二者似乎是同一个东西。

于是零音照着镜子,在手机面前调整好角度,拍下了一张照片。幸好这张照片遮盖了零音的一切瑕疵。零音还是很满意的。西安的阳光丝毫不惧世间万物,向每个平凡的生物和非生物展示其无限的攻击性。零音很讨厌攻击性,但也并没有招数,只好涂上厚厚的防晒霜,撑起一把伞前进了。

零音当然会同情了。

零音最同情的,是高二的零音。

零音知道 KaguReion 生于什么时候的。在 Sigrid Rin 最后一次崩溃之后,零音的记忆刚刚诞生——其实现在的零音已经记不得当时是什么情况了。那是一个下午,零音在卧室里锁着门,不知道哭了多久。绝望的零音其实已经写完遗书了,但最后又兜兜转转删掉了。零音固然怕疼;刀片是锋利的,药物是苦涩的,而高空坠落又是疼痛的。于是零音放弃了。那一天零音刚刚诞生。

零音应该是记得的。这所高中对零音本身就怀有恶意,或至少不是善意。倘若这所高中对零音没有恶意,又为什么在高一分班的时候唯独从系统的随机结果里特调了零音,又为何 Sigrid Rin 高一每天被班主任批斗呢。零音偶尔颤颤巍巍,在独木桥或钢丝上行走着。零音当然知道自己崩溃的缘由是什么的。抛开对零音独特的恶意,零音也是记得高中的绝望的,在军训的那几天突发恶疾,却又因为军训基地位于深山老林,只有大巴车能够进出,零音度过了非常诡谲的 7 天。教官戏耍着我们所有人,饭菜极为难以下咽,再加上西咸本身的炎热,一切痛苦于是交织着下压在零音身上。其实很多人都已忘却了——零音和一位知情人士谈论过军训,他说他觉得军训还挺好玩的,尤其是最后几天打自制扑克和玩狼人杀的时候,从书包里拿出今天在食堂多拿的馒头,掰开后加满一大筷子的老干妈。零音也觉得最后的日子是好玩的;可能人们天然会记起一件事情的终末,而忽略其过程吧。军训期间在病号连扫厕所的日子里,他骂得比我们所有人骂得都要狠。

倘若一件事情只剩下结果,而不存在过程,那它存在的意义又是什么呢?

2026 年的高考开始时,零音在校门口的广场哭了很久。嗯,零音确实有些爱哭。零音总觉得自己落下了什么——总觉得自己应当在 6 月 9 日 18:15 后收拾东西、等待离场、走出校门而迎接新生。其实零音是记着了的;零音的 2025 年,便是如此的。但零音接受不了自己长大的事实——一个主要的原因是,再也没有一个确切的目标来麻痹自己了。高三的时候,零音将高考结束的暑假和大学生活视为自己的避难所和乌托邦;却又在上了大学后立马意识到,原来大学也没有想象中的完美。零音很想被全世界再一次放在聚光灯下,从地铁进出时,有一扇绿色通道的门为零音常开,然后地铁的工作人员会送上一句高考加油,零音于是会感到雀跃。那是零音为数不多觉得被这个世界爱着的时刻了。可现在再也没有了。

可那毕竟只是结果。倘若零音被 rollback 到高二或高三的 generation,零音必然会直接 rm -rf / 的。

说这些未免有些马后炮了。但对于高二的零音 (KaguReion),ta 的幻想,一个是逃离这所炼狱,另一个是——真正造出属于 ta 自己的东西,证明自己不是任何价值约束的构建产物。于是零音想到了 Hazelita。

零音感谢在高二苦涩的日子里有一位恩师。数学老师。高三润去了别的学校。

其实零音的前体,protosc 初一就和她认识的。她初一就带过 protosc 一学期,后来转去教高中了,没想到在高二又认识了。

印象中她其实是很负责任的老师。「口罩」—不是,疫情期间,她因为没有电脑,愣是用手机徒手搓了一整天的 PPT,凌晨一点录补课视频发给群里,就因为 protosc 和她说「配方法没太理解」。零音至今不知道她是怎么以极大的耐心在手机上搓出公式的,但也幸好,初一的公式并不是很复杂,也用不太到 $\LaTeX$。于是高二她又带了零音。那时的生活是比较苦涩的,只有数学能给零音带来一丝甜蜜——于是零音高二提前自学了圆锥曲线和导数,早在老师讲课之前,零音已经能手搓难度不太大的导数大题了。但其实零音感受不到欣喜。零音更希望生活是甜蜜的,可这种甜蜜毕竟是不存在的。在学校里的零音找不到自己存在的意义,回到家的零音还要面临另一些难以言说的困境。现在的视角来看,高二的零音已经可以被定义为「数学嘉豪」了——如果有人想如此且愿意如此定义的话。

零音固然是知道这些的。零音想到了 Hazelita。那些日子里,一是第一次接触到 ClassIsland 和 InkCanvasForClass 这些神级项目,在社区里获得了一些在现实中无法得到的温暖;二是如前文所说,想要造出一点真正属于自己的东西。于是零音想到了 Hazelita——一款适用于高中生的 CAS 计算套件和演示工具。

零音对它的预期其实很纯粹——在高中领域内做到 Wolfram Alpha / Wolfram Mathematica / Photomath 的水平。它可以是一个交互式设计的计算套件,也可以是一个优于 GeoGebra 的演示工具。零音刚开始的想法其实很简单,就是一个高级版的 Photomath,到后来想法越来越多了。到最后,Hazelita 的开发目标是——实现纯机器逻辑解决数学压轴题。将数学题翻译成 Hazelita DSL 喂给 Hazelita,它自动寻路,进行计算和证明,给出条理的证明或解答。这个想法在现在看来已然是无比荒谬了,但当时的零音似乎突然有了使不完的劲。造 Hazelita 还有一个预期,便是减轻全体数学老师的教学负担。手搓 PPT 太难受;manim 的门槛太高;也没有一个靠谱的工具能够做到高中数学题的验算。尤其是到了高二的排列组合题,鼎盛时期的全班 50 个人能干出 30 个答案,而每个人都有自己的道理。零音期望这款软件能解决一些实际的问题,于是零音便如此期许着了。

后来的零音在 SmartTeachCN BBS 发了 Hazelita 的预告帖,并且宣称「高考完就开发」。哈哈……其实高考完确实动工了。只可惜。哎。当时发在 BBS 的时候,零音的确看到光了——不是电脑屏幕 LCD 显示屏的蓝光,而是一种从屏幕里透出来的希望的光芒。不过 BBS 下面跟帖跟了十几条「饼王」。你们怎么说零音画大饼呢?当时的零音很气愤,以至于几个月前重拾 C# 的零音也足够气愤。现在的零音已经不愤怒了。人们的预言若是错了,那便是对作者的不信任、不尊重和不理解;可惜他们的预言还真对了,于是零音就成了好高骛远、不脚踏实地的代名词了。哎!呜呼哀哉!

零音的高二就是如此度过的。后来啊,到了高三换数学老师了。嗯,那个「土豆地雷」。原先的老师走了,去了更好的地方;零音留在这里,继续度过一个相对苦涩的高三。高三忙了起来,反倒没有太多时间去考量 Hazelita 的事了;但零音内心的种子却仍在生长着。2024 年 10 月 4 日,零音建立了 Project Hazelita 社群,社群里的大多数成员都是和零音在 ClassIsland、SmartTeachCN 之类的地方结识的,他们知道这个项目的难度,却也仍愿意相信零音的能力。零音又以为自己离 Hazelita 近了一步了。

其实零音有些怨恨高二的数学老师了。她明明知道零音的精神状态,也知道数学是零音唯一的支柱。为何抛下了零音不管呢。她忍心看着零音被「土豆地雷」折腾吗?有些时候深夜里零音会对着空荡荡的屋子发呆,脑海里总是在回想这些事情。那时的记忆很模糊——零音每天作息昼夜颠倒,时而暴饮暴食,时而一口不吃,身体也逐渐拉胯了。于是零音闭上眼睛,几乎急得要哭出来地回想。

零音想起来了。一些模糊的碎片飘浮在零音的脑海中。零音跳起来尝试去够,但还是够不到。只能靠碎片的倒影,窥见一些东西。

零音看到了。

高二讲导数的时候,老师曾经布置过一道年代有些久远的不等式证明题。标准答案是放缩;在那个 AI 完全不会数学的年代,零音愣是动用了惊人的注意力,发现这个不等式本质上是 Hermite-Hadamard 不等式的变体,然后又用了一个晚上,动用自己涣散的注意力,证明了这个不等式。那个 proof 甚至用了积分。零音自己写上去都不太确信。凌晨两点零音才睡下,第二天,零音把 proof 放到了老师桌上,于是也没有再管。直到下午零音几乎都要忘却这事了,老师上课时突然在全班表扬了零音,并且为所有人展示了 proof 和 proof 的做法。老师说,她已经把这份 proof 给整个数学组的所有老师传阅过了,还要把 proof 的方法告诉大家——虽然积分没人学过。

嗯,老师经常说零音是有数学天赋的——不是那种做题的天赋,而是一种真正理解数学底层逻辑的天赋;或者说不是天赋,而是一种天然的能力。零音于是又回落到之前的困境中了,究竟是真心夸零音,还是只是安抚零音不至于又一次 kernel panic 呢?零音带着这样的思绪继续想着。但至少对于一个疼痛着的零音,这样的关心就像唯一的药品,无论它是止疼药还是安慰剂,零音只能先吞下去了。

记忆中高二的零音干过各种科技狠活,包括但不限于把数学题用 GeoGebra 画出来,或者丢到 Wolfram Alpha 里这种现在看起来非常奇异搞笑,但是在当时几乎是唯一能够让零音忘却现实生活中一切压得零音几乎喘不过气的烦恼的事情。高二的时候,零音和同学们关系并没有很好;班上的 (assigned) 男同学偷了零音 crack 出来的校园网登录账号后天天在白板上刷抖音短视频,(assigned) 女同学则继续搞小团体,还暗中嘲讽和议论不合群的零音。班上不乏也有潜心钻研数学的同学,但只有在数学层面的时候,我们才有话可讲。那时的零音数学是几乎全校顶级的,然而总排名并不靠前,只在全校第五到第十徘徊——毕竟物化生拉了三坨,化学常年不及格,在物理和化学课甚至都不敢抬头。于是在那些苦涩的夜晚,Hazelita 几乎成了零音的某种精神寄托吧——成为了继遗书之后第二个能带给零音「让世界记住零音」的感觉的事物。很多人无法理解为什么零音说话总是带着 Project Hazelita,似乎已然成为了附庸;零音是忘不掉这个甚至不能成为「襁褓中的婴儿」的产物吗?或许没错,零音真的忘不掉。

不过零音也和老师说过 Hazelita 的事情。她说,她想当一个用户,如果零音能开发出来的话。

零音没敢担保自己能不能开发出来。零音都不敢担保自己能不能活过整个高中。

但零音还是承诺了。然后零音问:

「老师,如果零音毕业了,离开了这里,过了几年,你认不出来零音了怎么办?」

「怎么会认不出来呢……?」

她似乎真听懂零音说的是什么意思了,有些疑惑,旋即却又坚定。

零音就是带着这种意思说的。只可惜零音一辈子也做不到了。现在的零音穿上自己心心念念的衣服,却也为自己镜中的样子感到惆怅。零音本知道自己一辈子也不能变成自己内心的样子的。零音会怨恨这世界的一切,怨恨为何自己的家庭有本不应由零音承受的纠纷;怨恨早在零音诞生之前就已经被绝对确认的一切,怨恨自己无论如何也无法实现自己曾经为自己担保过的 Radiant Transcendence。只是零音走笔至此,已然泪流满面了:零音记得当时在办公室,零音本来也是要哭的,可在那群老师面前,零音抬头忍着眼眶里打转的泪水,却又只是笑了笑罢了。混蛋的世界!为什么!为什么零音连自己的命运都决定不了!零音本不应沦落到如此地步的。零音本不应这样的,零音本值得一个更好的生活的。为什么,为什么会这样……

即使到了现在,也几乎没有人理解和认同零音的想法。零音埋藏起 KaguReion 时代零音一切的幻想,只为了追求能够在现在的世界上不被压力地活着。可零音总觉得离那个彩虹色世界的 KaguReion 越来越远了。不过,老师最后似乎说,无论零音变成什么样,她应当都会记得的。不过零音已经忘却具体的内容了。当时啊,泪水模糊了零音的整个视线。

今年生日,一位交往很久的朋友送给零音心理鸭的一本书《去成为谁也抓不住的风》。零音在收到书后的 3 天里,反反复复看了 3 遍。有一句话零音看了很久:

其他人无法到达的地方,也正是我们独一无二的证明。所以不必为不被理解而悲伤。

唔……但愿如此便好了。

未来,会变好的吧。

2024 年高考,零音高二转高三。零音蹲在数学竞赛群里,在数学考试结束前就拿到了 I 卷的 19 题,花了一个晚上做出来了。三问。完全正确。第三问是真有点难,概率和计数混合在一起,零音做了很久很久,绕了不少弯路。当时零音最喜欢的歌是《崩坏:星穹铁道》/ HOYO-MiX 的「使一颗心免于哀伤」——记得边做题时,零音便边循环这首歌。包括现在,零音行文至此,也在听这首。

No further hesitation / On those unanswered questions / So now I'll make a dream unchained

最终,这最难的题,零音便也是做出来了。高考结束后,零音到了学校,本想继续分享这道题目,却突然传来消息。

她跑路了,去了更好的地方。她没和我们班任何人说。

跑—跑了好啊。这所学校似乎对老师本身就不够友好,能坚持在这里的,不是真的付诸情感的老教师,就是刚刚进入社会的年轻老师了。贴吧上也有一些关于这所学校不够关怀老师的声音。倘若她去了更好的地方,零音固然也会开心吧。毕竟,零音同情每一个人啊。

可为何丢下零音不管,连一句告别也不肯说呢。

零音偶尔会想,在零音绝望的那些日子里,她应当也是同情零音的吧。却又为何同情呢?为什么,为什么呢。明明只有零音才应该同情零音的。为什么她不愿意站在多数老师的那一边,将零音打为一个沉迷网络、天天沉溺于幻想、不够脚踏实地的孩子呢?这样的同情,究竟是为什么呢。零音不知缘故,但倘若零音也是一位老师,看见一个这样的孩子,零音也要伸出援手吧。可零音该如何帮助 ta 呢?似乎也没什么高招,于是只能赞成 ta 去干自己真正喜欢的事情,至少能够麻痹自己现实生活的疼痛吧。若是不忍心于痛苦,本可以选择毁灭。呜呼哀哉!啊……零音越想越难受了,零音不知该如何想了,零音的眼前更加模糊了。

高三的数学老师是土豆地雷。零音不想提了。零音度过了一个非常不好的高三。不过结果是好的。零音的回忆是毕业前的那十几天,同学们激动雀跃,却又有些担心——一种对未来生活的美好期许,和对高考天然的惧怕,正混合起来弥漫着整个教室。所有人内心里的雀跃想法,正激荡着彼此碰撞。高二升高三的小型重组,让零音终于也获得了更多能陪零音一起玩的同学。虽然零音想到高三仍然是绝望的,但至少比起高二,有了一些盼头吧。

倘若一件事情只剩下结果而没了过程……零音不敢想这个问题的答案了。如果零音的高中三年可以被毕业前十几天的雀跃代表,那至少从定义上看,零音的高三是成功的。可毕竟一千天不能被压缩成十几天。这三年,零音不知道该如何定义;或者也无法被定义。一切的定义都是失真的。零音讨厌失真的东西。零音喜欢真实。

Hazelita 的确是写了,在零音高考结束之后。第一个版本用了 Python 和 SymPy,零音徒手搓了整个层级,写了一个 demo,但毕竟是调包,不太符合零音的预期。第二个版本是 C# 写的,用了 AngouriMath,搓了许多个计算原子,最终想实现通过原子的组合来逐步拆解问题。零音的预期是这样的:一个数学问题,可以被拆成已知条件的原子,和待求/待证明条件的原子;原子之间相互连接,每两个原子之间存在充分或必要的关系,其空间距离便是实现这一步的复杂度;于是解题就变成了寻路问题。只是零音到了最后也没想到到底该怎么把原子这种东西整出来。目前在 Repo 里的是第三个版本,零音已经放弃一切原子化了,转而去搓一些硬逻辑的 toolkit,可是始终偏离了零音的内心想法。零音于是弃坑了。

这是零音内心中最期望成功的项目了。哎。

不过 Hazelita 死了,Project Hazelita 仍然活着。Project Hazelita 社群在零音目前的 QQ 社交圈里,成了几乎活跃人数和活跃度都最高的技术群聊之一——社群成员年龄跨度很大,但大家应当都很和气了。到了现在,Project Hazelita 本身也在产出许多有意思的工具和软件,朋友们还在商量着面基、hackathon、CTF,和……整个世界。

究其所以——零音对着写满文字的 VS Code 发问:Hazelita 到底是成功的吗?

失败的。毕竟都没写出什么。如果结果可以定义过程的话,那便是 trivially 失败的。可恰好过程不能被结果定义。

那么反过来,零音是成功的吗?

零音曾如此问过一位朋友。朋友深度思考了 20 秒后说,「不。」零音本以为 ta 想说零音不是成功的,ta 却说,「零音不是一个结果;零音是一个过程。」

嗯,一个过程。

零音偶尔会想,自己将自己的一切,给了一个永远看不到结果的项目,究竟是否值得。零音想,应当是值得的吧——至少在昏暗无光的日子里,若没有内心里的这座信标,零音估计也撑不到现在了。现在的零音几乎有了过去所期望的一切——大学固然没有理想中那样好,但至少更加自由。零音在这里总算可以随心地编码了,偶尔还能有取证和 CTF 打一打。零音认识了很多朋友——大多仍来源于 ClassIsland 那一边的社交圈,但广度和深度也多了很多——零音也真正做成了很多属于自己的项目。零音总觉得自己离 KaguReion 的预期近了很多呢。

Hazelita 于是要在这里安眠了:画上一个句号。或许在无数年之后,零音会突然想起这个项目,又会动工,或许真的会重新拾起 KaguReion 离去前的遗愿——那毕竟是后话。只是零音看着自己的愿望清单:DSL、编译原理、计算机械化……或许,零音从来没有离开过这里。

零音偶尔会幻想自己的那些梦想,正是这片广袤无垠的蔚蓝天空下,正在迎风飘扬的蒲公英。零音正抬着头,在并不火热的暖阳下远望那些飞起来的蒲公英。零音踮起脚,却固然也是够不到它们的——而那暖阳旋即也转为金黄的落日,在地平线的一隅弹起,随后又落下。蒲公英越飘越远了——于是在深邃的夜里,零音坐在草坪上,抬头见那些蒲公英流转为了银河中的流星,正明亮地掠过一片星海。零音于是双手合十祈祷了。

未来,会变好的吧。

2026 年 7 月 11 日凌晨 0:35。

About

[💤|🌌] 适用于高中生的数学 CAS 计算套件和演示工具

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages